Provjerite jesu li vaši Rust projekti dobro organizirani kako bi ih bilo lakše održavati tijekom vremena.

Rust je izvrstan izbor za izgradnju složenih i pouzdanih aplikacija. Jedna od ključnih vještina za razvoj Rust aplikacija učinkovito je strukturiranje vaših projekata, uključujući uključivanje paketa trećih strana.

Učinkovita organizacija projekta ključna je za razvoj Rust aplikacija. Dobro strukturirane Rust aplikacije poboljšavaju suradnju i jednostavnu integraciju aplikacija trećih strana, značajno smanjujući vrijeme i trud potreban za razvoj aplikacije. Rust nudi ugrađeni upravitelj paketa i druge alate za učinkovitu organizaciju i upravljanje kodom.

Postavljanje Rust projekata

Postavljanje Rust projekata je jednostavno nakon što instalirate Rust na svoj stroj; možete koristiti Cargo (Rustov ugrađeni upravitelj paketa i sustav za izgradnju) za izradu i konfiguraciju Rust projekta. Sličan je drugim upraviteljima paketa poput npm za Node.js i pip za Python. Cargo upravlja ovisnostima, kompilira kod i generira dokumentaciju, što ga čini ključnim alatom za razvoj Rusta.

Pokrenite ovu naredbu da provjerite svoju instalaciju Carga:

teret --verzija

Naredba prikazuje instaliranu verziju Cargo.

Možete stvoriti novi Rust projekt s teret nov naredba. Morat ćete navesti naziv projekta.

teret novi moj_projekt

Naredba će stvoriti novi direktorij u trenutnom direktoriju koji sadrži osnovne datoteke koje su vam potrebne za vaš Rust projekt, uključujući teret.toml datoteku za upravljanje ovisnostima vašeg projekta.

Prostor imena paketa Rust

Paketi i sanduci bitne su komponente u Rustu. Sanduci su biblioteke ili binarne datoteke koje Rust programeri mogu koristiti i kompilirati za neku specifičnu upotrebu, a paketi su zbirka sanduka. Paketi obično sadrže sanduk koji sadrži kod za višekratnu upotrebu i binarnu datoteku koja pruža CLI za sanduk knjižnice.

Sanduci moraju sadržavati Teret.toml datoteka koja sadrži metapodatke o paketu, kao što su njegov naziv, verzija, ovisnosti i skripte za izgradnju.

Rust paketi slijede konvenciju imenovanja kako bi se izbjegli sukobi naziva među paketima. Imena paketa moraju biti globalno jedinstvena, mala slova i sadržavati samo slova, znamenke i crtice. Ako naziv paketa sadrži više riječi, odvojite ih crticama, npr. hiper-poslužitelj.

Kodu unutar imenskog prostora paketa Rust možete pristupiti s koristiti ključna riječ iza koje slijede nazivi paketa i sanduka.

Evo primjera uvoza Rng funkcija iz a rand sanduk:

koristiti rand:: Rng;

Možete stvoriti više imenskih prostora za pakete. Kada stvorite mapu, stvorite novi prostor imena kojemu možete pristupiti uz pomoć točke kako biste odredili put do identifikatora.

U Rustu može postojati više imenskih prostora za pakete. Kada kreirate mapu, stvarate novi prostor imena. Da biste pristupili kodu iz drugog imenskog prostora, koristite notaciju s točkom da odredite put do identifikatora.

Evo primjera pristupa funkciji iz drugog imenskog prostora:

// datoteka u imenskom prostoru mape1
pubfnmapa() -> u32 {
// neko tijelo funkcije ovdje
povratak0;
}

// datoteka u imenskom prostoru mape2
koristiti mapa1::mapa;

pubfnimenik() {
// pristup funkciji mape iz imenskog prostora folder1
neka folder_func = folder();
}

Program definira dva Rust modula u različitim imenskim prostorima, mapa1 i mapa2 odnosno. The mapa1 modul sadrži javnu funkciju mapa koji vraća 32-bitnu vrijednost cijelog broja bez predznaka.

The mapa2 modul uvozi mapa funkcija iz mapa1 imenski prostor s koristiti ključna riječ, dopuštajući imenik funkcija za pristup mapa funkcija iz mapa1 modul. The imenik funkcija poziva mapa funkcija, a povratna vrijednost se dodjeljuje funkciji folder_func varijabla.

Morat ćete velikim slovima napisati ime identifikatora iz paketa ili sanduka da biste ih izvezli. Kada izvozite identifikator, činite ga dostupnim u drugim paketima koji koriste kod.

Evo primjera javne funkcije koja se može izvesti.

// funkcija eksportirana u druge pakete i sanduke
pubfnMoja Funkcija() {
// neko tijelo funkcije ovdje
}

Također ćete morati koristiti pub ključna riječ. U Rustu, pub ključna riječ je skraćenica za javnost. Kada funkcija, struktura, enum, bilo koji Rust tip podataka ili modul označen ključnom riječi pub, postaje dostupan izvan svog modula. Stavka je privatna za svoj modul bez ključne riječi pub i može joj se pristupiti samo iz njega.

Definiranje modula za kontrolu opsega i privatnosti

Možete koristiti module za kontrolu opsega i privatnosti u Rust programima. Moduli vam omogućuju organiziranje koda u logičke jedinice kojima je lakše upravljati i održavati ih.

Možete deklarirati module s mod ključnu riječ iza koje slijedi naziv modula i vitičaste zagrade. Definiranjem novog modula stvara se novi prostor imena za njegov sadržaj, što znači da funkcije, strukture ili ostale stavke definirane unutar modula dostupne su samo unutar modula osim što ih eksplicitno izvozite ih.

Moduli pomažu spriječiti sukobe naziva, čineći kod intuitivnijim za razumijevanje.

Evo sintakse za jednostavan modul:

mod moj_modul {
// sadržaj modula ide ovdje
}

Unutar modula možete definirati varijable, funkcije, strukture, enume i druge vrste.

mod moj_modul {
fnzbroj_brojeva(a: i32, b: i32) -> i32 {
a + b
}
}

Možete koristiti pub ključnu riječ za izvoz funkcije i pristup funkciji u drugim dijelovima programa.

mod moj_modul {
pubfnzbroj_brojeva(a: i32, b: i32) -> i32 {
a + b
}
}

Sada možete nazvati zbroj_brojeva funkciju iz drugih dijelova vašeg programa.

Također možete kontrolirati privatnost modula pomoću pub ključna riječ o definicijama modula.

pubmod moj_modul {
pubfnzbroj_brojeva(a: i32, b: i32) -> i32 {
a + b
}
}

Sada, moj_modul modul je javan i možete mu pristupiti iz drugih modula.

Ako trebate omogućiti pristup modulu ili stavci određenom modulu ili skupu modula, možete koristiti pub (gajba) ključna riječ. The pub (gajba) ključna riječ čini stavku dostupnom iz modula unutar istog sanduka, ali ne i iz modula u drugim sanducima.

mod moj_modul {
pubstrukturiratiMyStruct {
pub(sanduk) neko_polje: u32,
}
}

Sada možete pristupiti određenoj stavci (u ovom slučaju, neko_polje polje od MyStruct struct) u drugim dijelovima vašeg programa.

fnglavni() {
neka my_struct = my_module:: MyStruct { some_field: 42 };
println!("{}", moja_struktura.neko_polje);
}

The moja_struktura varijabla je instanca MyStruct strukturirati Varijabla pristupa strukturi s razdjelnikom staze (::). The glavni funkcija ispisuje neko_polje polje strukture s println! makro.

Rustov model vlasništva osigurava sigurnost memorije

Organiziranje Rust koda jedan je od načina da osigurate da je vaš kod jednostavan za održavanje i podršku tijekom vremena. Lakše je rješavati pogreške i osigurati sigurnost u dobro organiziranom kodu koji slijedi pravila i konvencije Rust zajednice.

Prema zadanim postavkama, Rust osigurava da su programi sigurni za memoriju s ugrađenim modelom vlasništva. Model vlasništva osigurava sigurnost memorije osiguravajući da varijable u memoriji imaju jednog jedinstvenog vlasnika. Model vlasništva sprječava tragove podataka i mnoge vrste memorijskih pogrešaka.