- ,
- I-Rust igqama ngokuvikeleka kwayo, ukusebenza, nokulawula inkumbulo ngendlela efanele.
- Ubunikazi nokuguquguquka kuyisihluthulelo sokugwema amaphutha ajwayelekile.
- I-ecosystem ihlanganisa amathuluzi afana ne-Cargo kanye nomphakathi wezinsiza ezisebenzayo.
- Ukugqwala kukuvumela ukuthi udale yonke into kusuka emibhalweni elula kuya kumasistimu e-cross-platform aqinile.
Ukuthola i-Rust kungaba yinto ejabulisayo kulabo abafuna ulimi oluhlanganisa ukusebenza, ukuphepha, kanye nokuphathwa kwememori okungenaphutha ngaphandle kokulahla ukusebenziseka kalula. Kulesi sihloko, sizohlola umhlaba othakazelisayo we-Rust, sihlukanise izisekelo zawo, amandla awo ayinhloko kanye nobuthakathaka bawo, futhi sinikeze izibonelo ezisebenzayo ukuze ukwazi ukuthola okuningi kuwo kusukela ngosuku lokuqala.
Nakuba ekuqaleni ingafana nezinye izilimi zezinhlelo ezifana ne-C noma i-C++, i-Rust yenza umthelela omkhulu ngenxa yendlela yayo yesimanje yokuhambisana nokuphepha . Ilungele kokubili abaqalayo kanye nabathuthukisi abangochwepheshe abafuna ukugwema izinhlungu zekhanda ezinamaphutha enkumbulo noma izimo zomjaho.
Iyini i-Rust futhi kungani ithola ukuthandwa okungaka?
I-Rust ulimi lokuhlela izinhlelo olunenhloso eyinhloko ukunikeza ibhalansi phakathi kokuphepha, isivinini, kanye nokuhambisana kwemali . Yadalwa ngenhloso yokususa amaphutha avamile akhona kwezinye izilimi ezifanayo , njengezikhombisi -ndlela eziyinkinga, ukuvuza kwememori, kanye nezimo zohlanga ezivame ukuvela ezindaweni ezifanayo.
Abaningi bayibheka njengelandela ngokwemvelo i-C ne-C++, kodwa nge-syntax yesimanje, i-ecosystem ephilayo, kanye nokugxila okukhulu ekuthembekeni kwesofthiwe . Isetshenziswa izinkampani ezifana ne-Mozilla, i-Dropbox, i-Cloudflare, i-Canonical, nezinye eziningi ezinhlelweni zokusebenza okuphezulu kanye namaphrojekthi ohlelo lokusebenza.
Lezi yizona zindinganiso eziyinhloko zokuhlukanisa ze-Rust :
- Ukuphathwa kwememori ngaphandle kokuqoqwa kukadoti: Ngenxa yohlelo lwayo lobunikazi kanye nemithetho eqinile yokuboleka, izinkinga eziningi zenkumbulo ezivamile ziyagwenywa ngaphandle kwesidingo somqoqi wezibi ongenele.
- Ukusebenzisana okuphephile nokusebenzayo: Umhlanganisi uqinisekisa ukuthi izimo zomjaho azenzeki, okuvumela ukwenza imisebenzi eminingi kalula.
- Isivinini esiqhathaniswa ne-C/C++: Uma kuhlanganiswa futhi kulawulwa ukwabiwa kwememori, kutholwa amabhambambili asheshayo nasebenzayo.
- Isistimu yohlobo oluqinile nolumile: Ithola amaphutha amaningi ngesikhathi sokuhlanganisa, yenza kube lula ukugcinwa nokuvela kwamaphrojekthi.
I-Rust ingumthombo ovulekile futhi inomphakathi okhuthele kakhulu, onezinsiza eziningi ezifana nezifundo, izincwadi, izinkundla, nezinkulumo zawo wonke amazinga.
Ukufaka nokumisa indawo yokuthuthukisa
Ukuqala nge-Rust kulula kakhulu. Indlela enconywayo yokufaka ulimi namathuluzi alo ayisisekelo i -rustup . Lesi sifaki sikuvumela ukuthi ulande inguqulo yakamuva ye-Rust kanye ne -rustc (umhlanganisi) kanye ne -Cargo (umphathi wephakheji kanye nomakhi wephrojekthi).
Kuzinhlelo ze-GNU/Linux noma ze-MacOS , mane usebenzise umyalo olandelayo ku- terminal :
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Ku -Windows, ungalanda i-rustup-init.exe esebenzisekayo kuwebhusayithi esemthethweni bese ulandela i-installation wizard.
Ukuze uqinisekise ukuthi ukufakwa kuphumelele, sebenzisa:
rustc --version
Lokhu kuzobonisa inguqulo efakiwe ye-Rust compiler. Uma uhlangabezana nezinkinga, ikakhulukazi ku-macOS, ungaqinisekisa ukuthi unamathuluzi okuthuthukisa i-Xcode afakwe ngawo:
xcode-select --install
Kukhona futhi izandiso zama -IDE athandwa kakhulu, njenge-VS Code, i-IntelliJ IDEA, i-Emacs, ne-Nano, okwenza kube lula ukuhlela, ukuqedela ngokuzenzakalela, kanye nokulungisa iphutha lekhodi ye-Rust.
Amathuluzi abalulekile: i-rustup, i-rustc ne-Cargo
Uma indawo isilungile, kungumqondo omuhle ukuzijwayeza ngamathuluzi ayinhloko afakwe ngokuzenzakalelayo ku-Rust :
- i-rusup: Iphatha izinguqulo ezihlukene ze-Rust futhi ibuyekeze amashaneli (ezinzile, i-beta, ebusuku). Ikuvumela ukuthi ufake kalula, ubuyekeze, noma ushintshe phakathi kwezinguqulo.
- i-rustc: i-Rust compiler. Iguqula ikhodi yomthombo (.rs) ibe amabhanari asebenzisekayo. Ingacelwa ngokuqondile noma nge-Cargo.
- Isikhundla: Kuyinhliziyo ye-Rust ecosystem, ukuphatha ukwakhiwa kwephrojekthi, ukuncika (amakhreyithi), izivivinyo, imibhalo, nokuningi. Kuzoba umngane wakho omkhulu kusukela ngosuku lokuqala.
Ukwakha iphrojekthi entsha, umyalo ojwayelekile uthi:
cargo new_project yami
Lokhu kudala isiqondisi esijwayelekile kanye nesakhiwo sefayela, okuhlanganisa i-manifest ye -Cargo.toml kanye nefayela lomthombo oyinhloko i-src/main.rs . Udinga nje ukuhlela lokhu kwamuva ngekhodi yakho.
Ukuze uhlanganise futhi usebenzise iphrojekthi, sebenzisa:
cargo build # Yakha iphrojekthi (inambambili kuthagethi/debug/) cargo run # Yakha bese usebenzisa kanambambili ewumphumela

Okuyisisekelo nesakhiwo sohlelo lwe-Rust
Isakhiwo esiyisisekelo sohlelo lwe-Rust silula futhi sizojwayelana nalabo abake basebenza nezinye izilimi ezihlanganisiwe. Ake sibone ukuthi uhlelo olujwayelekile lwe-"Hello World" lungabukeka kanjani:
fn main() {println!("Sawubona, mhlaba!"); }
Umsebenzi oyinhloko fn main() yindawo yokungena. Uphawu ! ngemuva kwe-println lubonisa ukuthi luyi-macro (isici esikhethekile se-Rust sokwenza ikhodi ). I-semicolon ; iphetha imiyalelo.
Ikhodi yomthombo ivame ukuba kumafayela anesandiso se-.rs futhi i-syntax ikhumbuza ezinye izilimi zezinhlelo.
Okuguquguqukayo, okungaguquki kanye nokuguquguquka
Ku-Rust, zonke iziguquguquko aziguquki ngokuzenzakalelayo . Okusho ukuthi, uma inani selinikeziwe, alikwazi ukushintshwa ngaphandle kokuthi kuchazwe ngenye indlela ngokucacile. Lokhu kuvimbela amaphutha amaningi futhi kwenza ikhodi ibe nokubikezela okwengeziwe.
Ukuze umemezele ukuguquguquka, sebenzisa i- let :
vumela x = 10; // x = 20; // Lokhu kuzohluleka ngoba x ayiguquki
Uma udinga i-variable ukuze ukwazi ukushintsha, yibonise nge- mut :
vumela u-x = 10; x = 20; // Manje sekusemthethweni
Ama-constant achazwa nge -const futhi kumele abe nohlobo olucacile, kusetshenziswa izinhlamvu ezinkulu zegama nge-convention :
const MAX_SIZE: i32 = 100;
Lokhu kusiza ukuba nekhodi eqinile negcinekayo.
Izinhlobo zedatha: i-scalar nenhlanganisela
I-Rust inezinhlobo eziningi zezinhlobo zakudala , zombili i-scalar kanye ne-composite. Ake sibukeze eziyinhloko:
- Izinombolo ezisayiniwe: i8, i16, i32, i64, i128, isiza
- Izinombolo ezingasayiniwe: u8, u16, u32, u64, u128, sebenzisa
- Iphoyinti elintantayo: f32, f64 (inani elimisiwe lamadesimali ngu-f64)
- Izinhlamvu: char (isekela i-Unicode egcwele)
- I-Booleans: i-bool (iqiniso noma amanga)
- Uhlobo lweyunithi: () (okufana nokungenalutho kwezinye izilimi)
Kumaqoqo, ama-tuple nama- array ayatholakala :
- Ama-Tuples: Bakuvumela ukuthi uqoqe amanani ezinhlobo ezahlukahlukene futhi ufinyelele kuwo ngesikhundla:
let tuple = (1, "umbhalo", iqiniso); ake kuqala = tuple.0; // 1
- Izinhlu: Bagcina amanani amaningana ohlobo olufanayo eqoqwe ndawonye. Usayizi kufanele ucaciswe:
let array: [i32; 3] = [10, 20, 30];
Ama-array anosayizi omisiwe futhi athatha inkumbulo ehlangene, okuthuthukisa ukusebenza.
Ukuphathwa kwememori: isitaki nenqwaba
I-Rust yenza umehluko ocacile phakathi kwe-stack kanye ne-heap memory . Ngokuzenzakalelayo, idatha yosayizi owaziwayo nongaguquki igcinwa ku-stack, kuyilapho idatha edinga usayizi oguquguqukayo (njengama-vector) igcinwa ku-heap.
Umehluko omkhulu uma uqhathaniswa nezinye izilimi ezifana ne-C ukuthi i-Rust isebenzisa uhlelo lobunikazi , isusa isidingo sokuphatha imemori ngesandla, kodwa ngaphandle komqoqi kadoti.
Isibonelo esiyisisekelo sesitaki nenqwaba:
vumela x = 5; // x igcinwe esitakini let v = vec![1, 2, 3]; // v (inkomba kanye nemethadatha) kusitaki, idatha kwinqwaba
Uhlelo Lobunikazi, Ukuboleka kanye Nezikhathi Zokuphila
Inhliziyo yokuphathwa kwememori ku-Rust uhlelo lwayo lobunikazi . Inani ngalinye linomnikazi oyedwa; lapho lowo mnikazi ephuma endaweni, imemori ikhululwa ngokuzenzakalelayo. Ake sibheke isibonelo:
let s1 = String::from("sawubona"); vumela u-s2 = s1; // println!("{}", s1); // Iphutha: i-s1 ayisavumelekile, ubunikazi budluliselwe ku-s2
Uma sifuna ukuthi zombili lezi ziguquguquko zisebenze, kumele senze ikhophi ejulile :
let s1 = String::from("sawubona"); vumela u-s2 = s1.clone(); // Manje bobabili sebezimele
Uma umsebenzi uthatha inani njengepharamitha, uthatha ubunikazi ngokuzenzakalelayo:
fn take_ownership(s: String) {println!("{}", s); } let my_string = String::from("umnikazi"); thatha_ubunikazi(intambo_yami); // println!("{}", my_string); // Iphutha, ubunikazi budlulisiwe
Ukuze kugwenywe lokhu, kusetshenziswa izinkomba (&) , okuvumela ukufinyelela kwesikhashana enanini:
fn read_reference(s: &String) {println!("{}", s); }
Uma sifuna ukuguqula inani, kumele sisebenzise izinkomba eziguquguqukayo ( &mut ), futhi sihloniphe umthetho wokuthi kungaba khona izinkomba eziguquguqukayo eyodwa kuphela ngesikhathi, noma izinkomba eziningi ezingaguquki.
Amamakhro nemisebenzi ku-Rust
I-Rust ikuvumela ukuthi uchaze imisebenzi ngokucacile nangokulula. Igama elingukhiye elithi `fn` liqala incazelo. Uma umsebenzi ubuyisela inani, mane ubeke isisho (ngaphandle kwe-semicolon) ekugcineni:
i-fn sum(a: i32, b: i32) -> i32 {a + b }
Isici esikhethekile ku-Rust yi -macros , ekhonjwa uphawu lokubabaza ( !) . Isibonelo, i-`println! ` iphrinta ku-console. Ama-macros akuvumela ukuthi ukhiqize ikhodi ngesikhathi sokuhlanganiswa futhi awusizo kakhulu ekwenzeni imisebenzi ephindaphindwayo ngokuzenzakalela.
Izakhiwo (izakhiwo) kanye nokubala (enums)
Izakhiwo ku- Rust zikuvumela ukuthi udale izinhlobo zedatha ezenziwe ngokwezifiso:
isakhiwo Isikhundla {x: i32, y: i32, } let point = Isikhundla {x: 10, y: 20};
Ungakha ama-tuple structs (amasimu angaqanjwanga) noma izakhiwo ezinamasimu aqanjwe ngamagama . Ngaphezu kwalokho, ukwengeza i-`pub` kumasimu kuwenza abe sobala ngaphandle kwemojuli yamanje.
Ama-Enum akuvumela ukuthi uchaze uhlobo olungaba olunye lwezinhlobo eziningana, ngisho nedatha ehlobene:
enum Isenzo { Gxuma, Hambisa {x: i32, y: i32 }, Ithi(Intambo), } yekela igxume = Isenzo::Yeqa; let mov = Isenzo::Hambisa {x: 5, y: 10}; let speak = Isenzo::Yisho(String::from("Sawubona!"));
I-Option enum nokuphathwa okuphephile kwamanani ozikhethela wona
I-Rust ayinayo inani elingenalutho . Esikhundleni salokho, i- `Option` enum isetshenziselwa ukuveza ukuthi inani lingaba khona ( `Some(value)` ) noma alikho (` None` ):
vumela inombolo = Abanye(42); ungavumeli lutho: Inketho = Akukho;
Ukuze usebenze nge-`Option`, udinga ukuqaqa inani usebenzisa izindlela ezifana ne -`unwrap()` (qaphela ukuthi lingase lihluleke ku-`None`) noma ku-`unwrap_or(default_value)` . Okungcono nakakhulu ukusebenzisa ukufanisa amaphethini ukumboza zonke izimo.
fanisa inombolo { Some(n) => println!("Inani lithi {}", n), None => println!("Alikho inani"), }
Ukufanisa Iphethini Nokulawula Ukugeleza
Ukufanisa amaphethini kungenye yamagugu kaRust, okukuvumela ukuthi uphathe amathuba ahlukene ngokuphepha nangokucacile ngomqhubi wokufanisa :
enum Attack { Punch, Sword, Spear, Magic, } let attack = Attack::Sword; vumela umonakalo = ukuhlasela komdlalo { Attack::Punch => 5, Attack::Sword => 12, Attack::Spear => 8, Attack::Magic => 20, };
Kukhona futhi i-syntax elula ene- if let , ewusizo lapho kuphela icala elithile elithakazelisayo:
if let Some(value) = option {println!("Inani lamanje: {}", inani); }
Izindlela, imisebenzi ehambisanayo nokuvalwa
Igama elingukhiye elithi `impl` likuvumela ukuthi wengeze izindlela nemisebenzi ehlobene nezakhiwo kanye nama-enum. Isibonelo:
i-struct Point {x: i64, y: i64, } impl Point { fn new(x: i64, y: i64) -> Self { Self { x, y } } fn move_to(&mut self, other: Point) { self.x = other.x; self.y = okunye.y; }}
Ama-Closures , noma imisebenzi engaziwa, akuvumela ukuthi uthwebule iziguquguquko zemvelo. Achazwa nge- |parameters| :
vumela isici = 10; vumela_isici = |x: i32| x * isici; vumela umphumela = nge-factor_(5); // 50
Ukuhlola okuzenzakalelayo ku-Rust
I-Rust iza ifakwe uhlelo lokuhlola olwakhelwe ngaphakathi . Ikuvumela ukuthi udale imisebenzi yokuhlola kanye nekhodi yakho yokukhiqiza:
fn add(a: i32, b: i32) -> i32 {a + b } #[cfg(test)] ukuhlolwa kwe-mod {sebenzisa i-super::*; #[test] fn basic_sum() {assert_eq!(isamba(2, 3), 5); }}
Ukuze uziqalise, mane uthayiphe:
ukuhlolwa kwempahla
Lokhu kuzosebenzisa zonke izivivinyo futhi kubonise imiphumela kukhonsoli, okukuvumela ukuthi uthole amaphutha ngaphambi kokuthi afinyelele ekukhiqizweni.
Izinsiza zokufunda Ukugqwala kanye nezibonelo ezisebenzisanayo
Uma ubheke ukufunda ukusebenzisa i-Rust, kukhona amathani ezinsiza ezisemthethweni nezomphakathi:
- Ulimi lwe-Rust Programming: incwadi esemthethweni, yamahhala nebuyekeziwe, umhlahlandlela wesinyathelo ngesinyathelo kusukela kokuyisisekelo ukuqedela amaphrojekthi.
- Amasampula ekhodi esebenzisanayo: Amapulatifomu afana ne-Comprehensive Rust akuvumela ukuthi uzame futhi uhlele izibonelo esipheqululini ngokwaso, okwenza kube lula ukufunda ngaphandle kokufaka noma yini ngaphandle komhlanganisi.
- Izivivinyo ezingokoqobo: Izifundo eziningi zanamuhla zigxile ekufundeni ngokwenza, kusukela kumaphrojekthi wekhonsoli kuya ekudaleni izinhlelo zokusebenza zewebhu ezincane kanye nemibhalo ezenzakalelayo.
- Izinkundla nemiphakathi: Umphakathi weRust usebenza kakhulu, unezikhala ezinikelwe ukuphendula imibuzo, ukubuyekezwa kwekhodi, nemicimbi efana nemihlangano nezinkomfa.
Izibonelo ezisebenzisanayo ngokuvamile zihlanganisa amabhulokhi ekhodi afana nalawa:
fn main() {println!("Ngihlele!"); }
Kuyafaneleka ukuthatha leli thuba lalezi zindawo ezisebenzisanayo ukuze uhlole ngokungesabi, ulungise ikhodi, futhi ubone imiphumela ngokushesha.
Ukugqwala ku-ecosystem yamanje: izimo zokuhlanganisa nokusebenzisa
I-Rust ayiyona nje yezinhlelo zokusebenza zekhonsoli. Izinkampani eziningi kanye nabantu ngabanye bayayisebenzisa ezinhlelweni ezifakiwe, ukuhlanganiswa nezinye izilimi (njenge-Node.js esebenzisa i-Neon noma i-Python ene-PyO3), ukuthuthukiswa kwewebhu yangemuva (enezinhlaka ezifana ne-Rocket noma i-Actix), ngisho nokwakha izinhlelo zokusebenza eziphelele .
Izinkampani ezihamba phambili nezinhlangano, ezifana ne-Mozilla ne-Dropbox, zikhethe i-Rust kumaphrojekthi abalulekile emishini, ikakhulukazi ekwazisa ukwethembeka kwayo, ukuvimbela amaphutha wesikhathi sokusebenza, kanye nokusebenza okuvelele.
Ikhono lokuhlanganisa izakhiwo nezinkundla eziningi, kanye nohlelo lokuncika olulawulwa yi-Cargo kanye nemibhalo efiselekayo, kwenza i-Rust ibe inketho eguquguqukayo yazo zonke izinhlobo zentuthuko.
Umbhali oshisekayo ngomhlaba wamabhayithi nobuchwepheshe ngokujwayelekile. Ngiyathanda ukwabelana ngolwazi lwami ngokubhala, futhi yilokho engizokwenza kule bhulogi, ngikubonise zonke izinto ezithakazelisayo kakhulu ngamagajethi, isofthiwe, ihadiwe, izitayela zobuchwepheshe, nokuningi. Inhloso yami ukukusiza ukuthi uzulazule emhlabeni wedijithali ngendlela elula nejabulisayo.
Inkomba
- 1 Iyini i-Rust futhi kungani ithola ukuthandwa okungaka?
- 2 Ukufaka nokumisa indawo yokuthuthukisa
- 3 Amathuluzi abalulekile: i-rustup, i-rustc ne-Cargo
- 4 Okuyisisekelo nesakhiwo sohlelo lwe-Rust
- 5 Okuguquguqukayo, okungaguquki kanye nokuguquguquka
- 6 Izinhlobo zedatha: i-scalar nenhlanganisela
- 7 Ukuphathwa kwememori: isitaki nenqwaba
- 8 Uhlelo Lobunikazi, Ukuboleka kanye Nezikhathi Zokuphila
- 9 Amamakhro nemisebenzi ku-Rust
- 10 Izakhiwo (izakhiwo) kanye nokubala (enums)
- 11 I-Option enum nokuphathwa okuphephile kwamanani ozikhethela wona
- 12 Ukufanisa Iphethini Nokulawula Ukugeleza
- 13 Izindlela, imisebenzi ehambisanayo nokuvalwa
- 14 Ukuhlola okuzenzakalelayo ku-Rust
- 15 Izinsiza zokufunda Ukugqwala kanye nezibonelo ezisebenzisanayo
- 16 Ukugqwala ku-ecosystem yamanje: izimo zokuhlanganisa nokusebenzisa