Ujistěte se, že jsou vaše projekty Rust dobře zorganizované, aby se v průběhu času snáze udržovaly.

Rust je vynikající volbou pro budování složitých a spolehlivých aplikací. Jednou ze základních dovedností pro vývoj aplikací Rust je efektivní strukturování vašich projektů, včetně začlenění balíčků třetích stran.

Efektivní organizace projektu je pro vývoj aplikací Rust zásadní. Dobře strukturované aplikace Rust zlepšují spolupráci a snadnou integraci aplikací třetích stran, což výrazně snižuje čas a úsilí potřebné pro vývoj aplikací. Rust poskytuje vestavěného správce balíčků a další nástroje pro efektivní organizaci a správu kódu.

Nastavení Rust projektů

Nastavení projektů Rust je snadné jakmile na svůj počítač nainstalujete Rust; můžete použít Cargo (vestavěný správce balíčků a sestavení systému Rust) k vytvoření a konfiguraci projektu Rust. Je to podobné jako u jiných správců balíčků npm pro Node.js a pip pro Python. Cargo spravuje závislosti, kompiluje kód a generuje dokumentaci, což z něj činí základní nástroj pro vývoj Rust.

Spuštěním tohoto příkazu ověřte instalaci Cargo:

nákladní verze

Příkaz zobrazí nainstalovanou verzi Cargo.

Můžete vytvořit nový projekt Rust pomocí náklad nový příkaz. Budete muset zadat název projektu.

cargo new my_project

Příkaz vytvoří nový adresář v aktuálním adresáři obsahující základní soubory, které potřebujete pro svůj projekt Rust, včetně a cargo.toml soubor pro správu závislostí vašeho projektu.

Jmenný prostor balíku Rust

Balíčky a přepravky jsou základními součástmi v Rustu. Bedny jsou knihovny nebo binární soubory, které mohou vývojáři Rustu použít a zkompilovat pro určité specifické použití, a balíčky jsou sbírkou beden. Balíčky obvykle obsahují bednu, která obsahuje opakovaně použitelný kód, a binární soubor, který poskytuje CLI pro bednu knihovny.

Přepravky musí obsahovat Cargo.toml soubor obsahující metadata o balíčku, jako je jeho název, verze, závislosti a skripty sestavení.

Balíčky Rust se řídí konvencí pojmenování, aby se zabránilo konfliktům mezi balíčky. Názvy balíčků musí být globálně jedinečné, malé a obsahovat pouze písmena, číslice a spojovníky. Pokud název balíčku obsahuje více slov, oddělte je pomlčkami, např. hyper-server.

Ke kódu v rámci jmenného prostoru balíčku Rust můžete přistupovat pomocí použití klíčové slovo následované názvem balíku a přepravky.

Zde je příklad importu Rng funkce od a rand bedna:

použití rand:: Rng;

Pro balíčky můžete vytvořit více jmenných prostorů. Když vytvoříte složku, vytvoříte nový jmenný prostor, ke kterému můžete přistupovat pomocí tečkové notace pro určení cesty k identifikátoru.

V Rustu může existovat více jmenných prostorů pro balíčky. Když vytvoříte složku, vytvoříte nový jmenný prostor. Pro přístup ke kódu z jiného jmenného prostoru použijte tečkovou notaci k určení cesty k identifikátoru.

Zde je příklad přístupu k funkci z jiného jmenného prostoru:

// soubor ve jmenném prostoru folder1
hospodafnsložku() -> u32 {
// zde nějaké tělo funkce
vrátit se0;
}

// soubor ve jmenném prostoru folder2
použití složka1::složka;

hospodafnadresář() {
// přístup k funkci složky z oboru názvů folder1
nechat folder_func = složka();
}

Program definuje dva moduly Rust v různých jmenných prostorech, složka1 a složka2 respektive. The složka1 modul obsahuje veřejnou funkci složku který vrací 32bitovou celočíselnou hodnotu bez znaménka.

The složka2 modul importuje složku funkce z složka1 jmenný prostor s použití klíčové slovo, které umožňuje adresář funkce pro přístup k složku funkce z složka1 modul. The adresář funkce volá složku a návratová hodnota je přiřazena k folder_func variabilní.

Chcete-li exportovat identifikátory z balíčku nebo přepravky, musíte je napsat velkým písmenem. Když exportujete identifikátor, zpřístupníte jej v jiných balíčcích, které kód používají.

Zde je příklad veřejné funkce, kterou lze exportovat.

// funkce exportována do jiných balíčků a beden
hospodafnMyFunction() {
// zde nějaké tělo funkce
}

Budete také muset použít hospoda klíčové slovo. V Rustu, hospoda klíčové slovo je zkratka pro veřejnost. Když funkce, struktura, enum, jakýkoli datový typ Rust nebo je označen klíčovým slovem pub, stane se přístupným mimo jeho modul. Položka je pro svůj modul soukromá bez klíčového slova pub a lze k ní přistupovat pouze z něj.

Definování modulů pro řízení rozsahu a soukromí

Pomocí modulů můžete ovládat rozsah a soukromí v programech Rust. Moduly umožňují organizovat kód do logických jednotek, které se snadněji spravují a udržují.

Moduly můžete deklarovat pomocí mod klíčové slovo následované názvem modulu a složenými závorkami. Definováním nového modulu se pro jeho obsah vytvoří nový jmenný prostor, to znamená, že funkce, struktury, popř ostatní položky definované v modulu jsou přístupné pouze v rámci modulu, kromě toho, že je explicitně exportujete jim.

Moduly pomáhají předcházet konfliktům názvů, díky čemuž je kód srozumitelnější.

Zde je syntaxe jednoduchého modulu:

mod můj_modul {
// obsah modulu přejděte sem
}

V rámci modulu můžete definovat proměnné, funkce, struktury, výčty a další typy.

mod můj_modul {
fnpřidat_čísla(A: i32, b: i32) -> i32 {
a + b
}
}

Můžete použít hospoda klíčové slovo pro export funkce a přístup k funkci v jiných částech programu.

mod můj_modul {
hospodafnpřidat_čísla(A: i32, b: i32) -> i32 {
a + b
}
}

Nyní můžete zavolat na přidat_čísla funkce z jiných částí vašeho programu.

Můžete také ovládat soukromí modulů pomocí hospoda klíčové slovo v definicích modulu.

hospodamod můj_modul {
hospodafnpřidat_čísla(A: i32, b: i32) -> i32 {
a + b
}
}

Nyní, můj_modul modul je veřejný a můžete k němu přistupovat z jiných modulů.

Pokud potřebujete zpřístupnit modul nebo položku pro konkrétní modul nebo sadu modulů, můžete použít hospoda (bedna) klíčové slovo. The hospoda (bedna) klíčové slovo zpřístupní položku z modulů ve stejné bedně, ale ne z modulů v jiných bednách.

mod můj_modul {
hospodastrukturovatMyStruct {
hospoda(bedna) nějaké_pole: u32,
}
}

Nyní máte přístup ke konkrétní položce (v tomto případě k nějaké_pole pole MyStruct struct) v jiných částech vašeho programu.

fnhlavní() {
nechat my_struct = my_module:: MyStruct { some_field: 42 };
println!("{}", moje_struktura.nějaké_pole);
}

The moje_struktura proměnná je instancí třídy MyStruct strukturovat. Proměnná přistupuje ke struktuře pomocí oddělovače cesty (::). The hlavní funkce vytiskne nějaké_pole pole struktury s println! makro.

Vlastnický model Rust zajišťuje bezpečnost paměti

Uspořádání kódu Rust je jedním ze způsobů, jak zajistit snadnou údržbu a podporu kódu v průběhu času. Je snazší řešit chyby a zajistit bezpečnost v dobře organizovaném kódu, který se řídí pravidly a konvencemi komunity Rust.

Ve výchozím nastavení Rust zajišťuje, že programy jsou bezpečné v paměti pomocí vestavěného modelu vlastnictví. Model vlastnictví zajišťuje bezpečnost paměti tím, že zajišťuje, že proměnné v paměti mají jednoho jedinečného vlastníka. Model vlastnictví zabraňuje sledování dat a mnoha typům chyb paměti.