Veenduge, et teie Rusti projektid oleksid hästi korraldatud, et neid oleks aja jooksul lihtsam hooldada.

Rooste on suurepärane valik keerukate ja töökindlate rakenduste ehitamiseks. Üks Rusti rakenduste arendamise põhioskusi on teie projektide tõhus struktureerimine, sealhulgas kolmandate osapoolte pakettide kaasamine.

Tõhus projektikorraldus on Rusti rakenduste arendamiseks ülioluline. Hästi struktureeritud Rust-rakendused parandavad koostööd ja hõlbustavad kolmandate osapoolte rakenduste integreerimist, vähendades oluliselt rakenduste arendamiseks kuluvat aega ja vaeva. Rust pakub sisseehitatud paketihaldurit ja muid tööriistu tõhusaks koodi korraldamiseks ja haldamiseks.

Roosteprojektide seadistamine

Rusti projektide seadistamine on lihtne kui olete Rusti oma masinasse installinud; saate Rusti projekti loomiseks ja konfigureerimiseks kasutada Cargot (Rusti sisseehitatud paketihaldur ja ehitussüsteem). See sarnaneb teiste paketihalduritega npm Node.js jaoks ja pip Pythoni jaoks. Cargo haldab sõltuvusi, koostab koodi ja genereerib dokumentatsiooni, muutes selle oluliseks tööriistaks Rusti arendamiseks.

instagram viewer

Käivitage see käsk, et kontrollida oma lasti installimist:

lasti -- versioon

Käsk kuvab installitud Cargo versiooni.

Saate luua uue Rusti projekti rakendusega lasti uus käsk. Peate määrama projekti nime.

lasti uus minu_projekt

Käsk loob praeguses kataloogis uue kataloogi, mis sisaldab oma Rusti projekti jaoks vajalikke põhifaile, sealhulgas a lasti.toml faili oma projekti sõltuvuste haldamiseks.

Roostepaketi nimeruum

Paketid ja kastid on Rusti olulised komponendid. Kastid on teegid või kahendfailid, mida Rusti arendajad saavad kasutada ja mõneks konkreetseks otstarbeks kompileerida, ning paketid on kastide kogum. Paketid sisaldavad tavaliselt kasti, mis sisaldab korduvkasutatavat koodi, ja binaarfaili, mis pakub raamatukogu kasti jaoks CLI-d.

Kastid peavad sisaldama Cargo.toml faili, mis sisaldab paketi metaandmeid, nagu selle nimi, versioon, sõltuvused ja ehitusskriptid.

Roostepaketid järgivad nimede andmise tava, et vältida pakettide vahelisi nimekonflikte. Paketinimed peavad olema globaalselt kordumatud, väiketähtedega ja sisaldama ainult tähti, numbreid ja sidekriipse. Kui paketi nimi sisaldab mitut sõna, eraldage need sidekriipsudega, nt. hüperserver.

Rusti paketi nimeruumis olevale koodile pääsete juurde nupuga kasutada märksõna, millele järgneb paketi ja kasti nimed.

Siin on näide importimisest Rng funktsioon alates a rand kast:

kasutada rand:: Rng;

Saate luua pakettide jaoks mitu nimeruumi. Kausta loomisel loote uue nimeruumi, millele pääsete juurde punktitähisega, et määrata identifikaatori tee.

Rustis võib pakettide jaoks olla mitu nimeruumi. Kausta loomisel loote uue nimeruumi. Teisest nimeruumist pärit koodile juurdepääsu saamiseks kasutage tähistust, et määrata identifikaatori tee.

Siin on näide funktsioonile juurdepääsust teisest nimeruumist:

// fail kausta1 nimeruumis
pubifnkausta() -> u32 {
// siin mingi funktsioonikeha
tagasi0;
}

// fail kausta2 nimeruumis
kasutada kaust1::kaust;

pubifnkataloog() {
// juurdepääsu kausta funktsioonile kausta1 nimeruumist
lase kaust_func = kaust();
}

Programm määratleb kaks Rust moodulit erinevates nimeruumides, kaust1 ja kaust2 vastavalt. The kaust1 moodul sisaldab avalikku funktsiooni kausta mis tagastab 32-bitise märgita täisarvu väärtuse.

The kaust2 moodul impordib kausta funktsioonist kaust1 nimeruum koos kasutada märksõna, mis võimaldab kataloog funktsioon juurdepääsuks kausta funktsioonist kaust1 moodul. The kataloog funktsioon kutsub esile kausta funktsioon ja tagastatav väärtus määratakse funktsioonile kausta_funktsioon muutuv.

Eksportimiseks peate paki või kasti identifikaatorite nimed suurtähtedega kirjutama. Identifikaatori eksportimisel muudate selle kättesaadavaks muudes koodi kasutavates pakettides.

Siin on näide avalikust funktsioonist, mida saab eksportida.

// funktsioon eksporditakse teistesse pakettidesse ja kastidesse
pubifnMinu funktsioon() {
// siin mingi funktsioonikeha
}

Samuti peate kasutama pubi märksõna. Roostes on pubi märksõna on lühend avalik. Kui funktsioon, struktuur, enum, mis tahes rooste andmetüüp või moodul on märgitud pubi märksõnaga, muutub see kättesaadavaks väljaspool oma moodulit. Üksus on oma mooduli jaoks privaatne ilma pubi märksõnata ja sellele pääseb juurde ainult selle seest.

Moodulite määratlemine ulatuse ja privaatsuse kontrollimiseks

Saate kasutada mooduleid Rusti programmide ulatuse ja privaatsuse kontrollimiseks. Moodulid võimaldavad korraldada koodi loogilisteks üksusteks, mida on lihtsam hallata ja hooldada.

Saate mooduleid deklareerida mod märksõna, millele järgneb mooduli nimi ja lokkis sulud. Uue mooduli määratlemine loob selle sisu jaoks uue nimeruumi, mis tähendab, et funktsioonid, struktuurid või muud moodulis määratletud üksused on juurdepääsetavad ainult moodulis, välja arvatud juhul, kui ekspordite selgesõnaliselt neid.

Moodulid aitavad vältida nimetamiskonflikte, muutes koodi intuitiivsemaks mõistetavaks.

Siin on lihtsa mooduli süntaks:

mod minu_moodul {
// mooduli sisu läheb siia
}

Mooduli sees saate määratleda muutujaid, funktsioone, struktuure, enumme ja muid tüüpe.

mod minu_moodul {
fnlisa_numbrid(a: i32, b: i32) -> i32 {
a + b
}
}

Võite kasutada pubi märksõna funktsiooni eksportimiseks ja funktsioonile juurdepääsuks programmi teistes osades.

mod minu_moodul {
pubifnlisa_numbrid(a: i32, b: i32) -> i32 {
a + b
}
}

Nüüd saate helistada lisa_numbrid funktsiooni teistest teie programmi osadest.

Samuti saate moodulite privaatsust juhtida pubi märksõna mooduli definitsioonide kohta.

pubimod minu_moodul {
pubifnlisa_numbrid(a: i32, b: i32) -> i32 {
a + b
}
}

Nüüd, minu_moodul moodul on avalik ja moodulile pääsete juurde teistest moodulitest.

Kui teil on vaja muuta moodul või üksus konkreetsele moodulile või moodulite komplektile juurdepääsetavaks, saate kasutada pubi (kast) märksõna. The pubi (kast) märksõna muudab üksuse ligipääsetavaks samas kastis olevatest moodulitest, kuid mitte teistes kastides olevatest moodulitest.

mod minu_moodul {
pubistruktuurMinuStruktuur {
pubi(kast) some_field: u32,
}
}

Nüüd pääsete juurde konkreetsele üksusele (antud juhul mingi_väli valdkonnas MinuStruktuur struct) teie programmi muudes osades.

fnpeamine() {
lase minu_struktuur = minu_moodul:: MinuStruktuur { mingi_väli: 42 };
println!("{}", minu_konstruktsioon.mingi_väli);
}

The minu_struktuur muutuja on eksemplar MinuStruktuur struktuur. Muutuja pääseb struktuuri juurde tee eraldajaga (::). The peamine funktsioon prindib mingi_väli välja struktuuri koos println! makro.

Rusti omandimudel tagab mälu ohutuse

Rust-koodi korraldamine on üks viis tagada, et teie koodi oleks lihtne hooldada ja aja jooksul toetada. Hästi organiseeritud koodiga, mis järgib Rusti kogukonna reegleid ja tavasid, on lihtsam vigade vastu võidelda ja turvalisust tagada.

Vaikimisi tagab Rust sisseehitatud omandimudeli abil programmide mälukindluse. Omandimudel tagab mälu ohutuse, tagades, et mälu muutujatel on üks kordumatu omanik. Omandimudel hoiab ära andmejäljed ja mitut tüüpi mäluvigu.