Pārliecinieties, vai jūsu Rust projekti ir labi organizēti, lai laika gaitā tos būtu vieglāk uzturēt.

Rūsa ir lieliska izvēle sarežģītu un uzticamu lietojumu celtniecībai. Viena no svarīgākajām prasmēm Rust lietojumprogrammu izstrādei ir efektīva projektu strukturēšana, tostarp trešo pušu pakotņu iekļaušana.

Efektīva projektu organizācija ir ļoti svarīga Rust lietojumprogrammu izstrādei. Labi strukturētas Rust lietotnes uzlabo sadarbību un vienkāršu trešo pušu lietotņu integrāciju, ievērojami samazinot lietotņu izstrādei nepieciešamo laiku un pūles. Rust nodrošina iebūvētu pakotņu pārvaldnieku un citus rīkus efektīvai koda organizēšanai un pārvaldībai.

Rūsas projektu iestatīšana

Rust projektu iestatīšana ir vienkārša kad esat instalējis Rust savā mašīnā; varat izmantot Cargo (Rust iebūvēto pakotņu pārvaldnieku un veidošanas sistēmu), lai izveidotu un konfigurētu Rust projektu. Tas ir līdzīgs citiem pakotņu pārvaldniekiem, piemēram npm Node.js un pip Python. Cargo pārvalda atkarības, apkopo kodu un ģenerē dokumentāciju, padarot to par būtisku rīku Rust izstrādei.

Palaidiet šo komandu, lai pārbaudītu kravas instalāciju:

krava -- versija

Komanda parāda instalēto Cargo versiju.

Varat izveidot jaunu Rust projektu, izmantojot krava jauna komandu. Jums būs jānorāda projekta nosaukums.

kravas jauns mans_projekts

Komanda izveidos jaunu direktoriju pašreizējā direktorijā, kurā būs pamata faili, kas nepieciešami jūsu Rust projektam, tostarp a kravas.toml failu, lai pārvaldītu jūsu projekta atkarības.

Rūsas pakotnes nosaukumu telpa

Iepakojumi un kastes ir būtiskas Rust sastāvdaļas. Kastes ir bibliotēkas vai binārie faili, ko Rust izstrādātāji var izmantot un apkopot noteiktai lietošanai, un pakotnes ir kastu kolekcija. Pakas parasti satur kasti, kurā ir atkārtoti lietojams kods, un bināro failu, kas nodrošina bibliotēkas kastes CLI.

Kastēs ir jābūt Krava.toml failu, kas satur pakotnes metadatus, piemēram, tās nosaukumu, versiju, atkarības un veidošanas skriptus.

Rūsas pakotnes ievēro nosaukumu piešķiršanas konvenciju, lai izvairītos no nosaukumu konfliktiem starp pakotnēm. Pakotņu nosaukumiem ir jābūt globāli unikāliem, ar mazajiem burtiem, un tajos ir jābūt tikai burtiem, cipariem un defisēm. Ja pakotnes nosaukumā ir vairāki vārdi, atdaliet tos ar defisēm, piemēram, hiperserveris.

Varat piekļūt kodam Rust pakotnes nosaukumvietā, izmantojot izmantot atslēgvārdu, kam seko pakotnes un kastes nosaukumi.

Šeit ir importēšanas piemērs Rng funkcija no a rand kaste:

izmantot rand:: Rng;

Pakotnēm varat izveidot vairākas nosaukumvietas. Kad veidojat mapi, tiek izveidota jauna nosaukumvieta, kurai varat piekļūt ar punktu apzīmējumu, lai norādītu ceļu uz identifikatoru.

Programmā Rust pakotnēm var būt vairākas nosaukumvietas. Kad veidojat mapi, tiek izveidota jauna nosaukumvieta. Lai piekļūtu kodam no citas nosaukumvietas, izmantojiet punktu apzīmējumu, lai norādītu ceļu uz identifikatoru.

Šeit ir piemērs, kā piekļūt funkcijai no citas nosaukumvietas:

// fails mapes 1 nosaukumvietā
krogsfnmapi() -> u32 {
// šeit kāds funkciju korpuss
atgriezties0;
}

// fails folder2 nosaukumvietā
izmantot mape1::mape;

krogsfndirektoriju() {
// piekļūstot mapes funkcijai no mapes1 nosaukumvietas
ļaut folder_func = mape();
}

Programma definē divus Rust moduļus dažādās nosaukumu telpās, mape1 un mape2 attiecīgi. The mape1 modulis satur publisku funkciju mapi kas atgriež 32 bitu neparakstītu vesela skaitļa vērtību.

The mape2 modulis importē mapi funkcija no mape1 nosaukumvieta ar izmantot atslēgvārdu, kas ļauj direktoriju funkcija, lai piekļūtu mapi funkcija no mape1 modulis. The direktoriju funkcija izsauc mapi funkciju, un atgriešanas vērtība tiek piešķirta folder_func mainīgs.

Lai tos eksportētu, iepakojuma vai kastes identifikatoru nosaukumi būs jāraksta ar lielo burtu. Eksportējot identifikatoru, jūs padarāt to pieejamu citās pakotnēs, kurās tiek izmantots kods.

Šeit ir piemērs publiskai funkcijai, kuru var eksportēt.

// funkcija eksportēta uz citām pakotnēm un kastēm
krogsfnMyFunction() {
// šeit kāds funkciju korpuss
}

Jums būs arī jāizmanto krogs atslēgvārds. Rūsā, krogs atslēgvārds ir saīsinājums publiski. Kad funkcija, struktūra, enum, jebkurš Rust datu tips vai modulis ir atzīmēts ar pub atslēgvārdu, tas kļūst pieejams ārpus tā moduļa. Vienums ir privāts modulim bez pub atslēgvārda, un tam var piekļūt tikai no tā.

Moduļu noteikšana darbības jomas un konfidencialitātes kontrolei

Varat izmantot moduļus, lai kontrolētu Rust programmu darbības jomu un privātumu. Moduļi ļauj sakārtot kodu loģiskās vienībās, kuras ir vieglāk pārvaldīt un uzturēt.

Jūs varat deklarēt moduļus ar mod atslēgvārdu, kam seko moduļa nosaukums un cirtaini iekavas. Definējot jaunu moduli, tā saturam tiek izveidota jauna nosaukumvieta, kas nozīmē, ka funkcijas, struktūras vai citi modulī definētie vienumi ir pieejami tikai modulī, izņemot to, ka jūs tieši eksportējat viņiem.

Moduļi palīdz novērst nosaukumu konfliktus, padarot kodu intuitīvāku saprotamu.

Šeit ir vienkārša moduļa sintakse:

mod mans_modulis {
// moduļa saturs iet šeit
}

Moduļa ietvaros varat definēt mainīgos, funkcijas, struktūras, enums un citus veidus.

mod mans_modulis {
fnadd_numbers(a: i32, b: i32) -> i32 {
a + b
}
}

Jūs varat izmantot krogs atslēgvārds, lai eksportētu funkciju un piekļūtu funkcijai citās programmas daļās.

mod mans_modulis {
krogsfnadd_numbers(a: i32, b: i32) -> i32 {
a + b
}
}

Tagad jūs varat zvanīt uz add_numbers funkciju no citām programmas daļām.

Varat arī kontrolēt moduļu konfidencialitāti, izmantojot krogs atslēgvārds moduļu definīcijās.

krogsmod mans_modulis {
krogsfnadd_numbers(a: i32, b: i32) -> i32 {
a + b
}
}

Tagad, my_module modulis ir publisks, un modulim var piekļūt no citiem moduļiem.

Ja modulis vai vienums ir jāpadara pieejams konkrētam modulim vai moduļu kopai, varat izmantot krogs (kaste) atslēgvārds. The krogs (kaste) atslēgvārds padara vienumu pieejamu no moduļiem tajā pašā kastē, bet ne no moduļiem citās kastēs.

mod mans_modulis {
krogsstruktūraMyStruct {
krogs(kaste) some_field: u32,
}
}

Tagad varat piekļūt konkrētajam vienumam (šajā gadījumā some_field jomā MyStruct struct) citās programmas daļās.

fngalvenais() {
ļaut my_struct = my_module:: MyStruct { some_field: 42 };
println!("{}", my_struct.some_field);
}

The my_struct mainīgais ir gadījums MyStruct struktūra. Mainīgais piekļūst struktūrai ar ceļa atdalītāju (::). The galvenais funkcija izdrukā some_field struktūras lauks ar println! makro.

Rust īpašumtiesību modelis nodrošina atmiņas drošību

Rūsas koda organizēšana ir viens no veidiem, kā nodrošināt, lai jūsu kods būtu viegli uzturējams un laika gaitā atbalstīts. Ir vieglāk novērst kļūdas un nodrošināt drošību, izmantojot labi organizētu kodu, kas atbilst Rust kopienas noteikumiem un konvencijām.

Pēc noklusējuma Rust nodrošina, ka programmas ir drošas atmiņā ar iebūvētu īpašumtiesību modeli. Īpašumtiesību modelis nodrošina atmiņas drošību, nodrošinot, ka atmiņā esošajiem mainīgajiem ir viens unikāls īpašnieks. Īpašumtiesību modelis novērš datu izsekošanu un daudzu veidu atmiņas kļūdas.