- ,
- 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.
I-Discovering Rust kungaba uhambo lwalabo abafuna ulimi oluhlanganisa ukusebenza, ukuphepha, nokuphathwa kwenkumbulo okungenakuqhathaniswa., ngaphandle kokudela ukusetshenziswa kalula. Kulesi sihloko, sizocwila emhlabeni othakazelisayo we-Rust, siqaqa izisekelo zawo, amandla awo ayinhloko nobuthakathaka, futhi sibonisa izibonelo ezisebenzayo ukuze uthole okuningi kulo kusukela osukwini lokuqala.
Nakuba uma uthi nhlá ingahle ifane nezinye izilimi zesistimu ezifana ne-C noma i-C++, i-Rust yenza indlela yokungena eqinile ngenxa yendlela yayo yesimanje yokufundisa. ukubakhona nokuvikelekaIlungele kokubili abasaqalayo nabathuthukisi abanolwazi abafuna ukugwema ubuhlungu bekhanda ngamaphutha enkumbulo noma izimo zohlanga.
Iyini i-Rust futhi kungani ithola ukuthandwa okungaka?
ukugqwala a ulimi lwe uhlelo wezinhlelo inhloso yayo enkulu iwukunikeza ibhalansi phakathi ukuphepha, isivinini kanye nokuba khona. Yazalwa inombono wokuqeda amaphutha avamile akhona kwezinye izilimi ezifanayo, njengokucasulayo Izinkomba ezingenalutho, ukuvuza kwenkumbulo, nezimo zomjaho ezivame ukuvela ezindaweni ezifanayo.
Abaningi bakubheka njengokulandela okungokwemvelo ku-C no-C++, kodwa nge-syntax yesimanje, i-ecosystem ephilayo, nokugxila kakhulu ukuthembeka ye-softwareIsetshenziswa izinkampani ezifana neMozilla, Dropbox, Cloudflare, Canonical, nezinye eziningi ezinhlelweni ezisebenza kahle kakhulu namaphrojekthi wohlelo.
Lezi yizona eziyinhloko Amanani ahlukile wokugqwala:
- 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
Ukuqalisa nge-Rust kulula kakhulu. Indlela enconyiwe yokufaka ulimi kanye namathuluzi alo ayisisekelo ukugqwala. Lesi sifaki sikuvumela ukuthi ulande inguqulo yakamuva ezinzile ye-Rust kanye nayo i-rustc (umdidiyeli) kanye cargo (umphathi wephakheji nokwakhiwa kwephrojekthi).
Kuzinhlelo ze-GNU/Linux noma ze-MacOS, vele usebenzise umyalo olandelayo ku Isikhumulo:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
En Windows Ungalanda i-rustup-init.exe esebenzisekayo kuwebhusayithi esemthethweni bese ulandela iwizadi yokufaka.
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 edume kakhulu, njenge-VS Code, i-IntelliJ IDEA, i-Emacs, ne-Nano, okwenza kube lula ukuhlela, ukuqedela ngokuzenzakalela, kanye nokususa iphutha ikhodi ye-Rust.
Amathuluzi abalulekile: i-rustup, i-rustc ne-Cargo
Uma imvelo isilungile, kulula ukwazi okuyinhloko amathuluzi afakwe ngokuzenzakalela 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 kukhiqiza uhla lwemibhalo olujwayelekile kanye nesakhiwo sefayela, okuhlanganisa ne-manifest. cargo.toml kanye nefayela eliwumthombo oyinhloko src/main.rs. Udinga nje ukuhlela okwakamuva 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
La isakhiwo esiyisisekelo sohlelo ku-Rust Ilula futhi izojwayeleka kulabo abake basebenza nezinye izilimi ezihlanganisiwe. Ake sibone ukuthi i-"Hello World" ingabukeka kanjani:
fn main() {println!("Sawubona, mhlaba!"); }
Umsebenzi oyinhloko i-fn main() indawo yokungena. Uphawu ! ngemuva println ikhombisa ukuthi iyi-macro (isici esikhethekile se-Rust for khiqiza ikhodi). Isemicolon ; qeda imiyalelo.
Ikhodi yomthombo ivamise ukuba kumafayela anesandiso .rs futhi i-syntax ikhumbuza ezinye izilimi zesistimu.
Okuguquguqukayo, okungaguquki kanye nokuguquguquka
Ku-Rust zonke eziguquguqukayo zikhona engaguquleki ngokuzenzakalelayoOkusho ukuthi, uma inani labelwe, alikwazi ukushintshwa ngaphandle kwalapho kushiwo ngenye indlela ngokucacile. Lokhu kuvimbela amaphutha amaningi futhi kwenza ikhodi ibikezeleke kakhudlwana.
Ukumemezela okuguquguqukayo okusebenzisayo vumela:
vumela x = 10; // x = 20; // Lokhu kuzohluleka ngoba x ayiguquki
Uma udinga okuguquguqukayo ukuze ukwazi ukushintsha, kubonise nge mut:
vumela u-x = 10; x = 20; // Manje sekusemthethweni
I-Las constants zichazwa nge i-const futhi kufanele ibe nohlobo olucacile, isebenzisa osonhlamvukazi begama ngokwesimiso:
const MAX_SIZE: i32 = 100;
Lokhu kusiza ukuba nekhodi eqinile negcinekayo.
Izinhlobo zedatha: i-scalar nenhlanganisela
Ukugqwala kune- izinhlobonhlobo zezinhlobo zakudala, kokubili scalar kanye nenhlanganisela. Ake sibuyekeze 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)
Ngamaqoqo sinawo atholakalayo ama-tuples y uhlu:
- 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
Ukugqwala kwenza umehluko ocacile phakathi inkumbulo ye-stack kanye nenqwabaNgokuzenzakalelayo, idatha yosayizi owaziwayo, ogxilile igcinwa esitakini, kuyilapho idatha edinga usayizi oguqukayo (njengama-vectors) igcinwa enqwabeni.
Umehluko omkhulu uma kuqhathaniswa nezinye izilimi ezifana no-C ukuthi iRust iyasebenza a uhlelo lobunikazi (impahla), ukususa isidingo sokuphatha inkumbulo 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 kwenkumbulo eRust iyona uhlelo lwempahlaInani ngalinye linomnikazi oyedwa; uma iphuma endaweni, inkumbulo ikhululeka 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 kokubili okuguquguqukayo kusebenze, kufanele senze a 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 ugweme lokhu, zisetshenziswa izinkomba (&), okuvumela ukufinyelela kwesikhashana kunani:
fn read_reference(s: &String) {println!("{}", s); }
Uma sifuna ukulungisa inani, kufanele sisebenzise izithenjwa eziguqulekayo (&muthi), futhi bahloniphe umthetho wokuthi kungaba khona ireferensi eyodwa kuphela eguqulekayo ngesikhathi, noma izithenjwa eziningi ezingaguquleki.
Amamakhro nemisebenzi ku-Rust
Ukugqwala kukuvumela ukuthi uchaze imisebenzi ngokucacile futhi kalula. Igama elingukhiye fn iqala incazelo. Uma umsebenzi ubuyisela inani, vele ubeke isisho (ngaphandle kwe-semicolon) ekugcineni:
i-fn sum(a: i32, b: i32) -> i32 {a + b }
Isici esikhethekile ku-Rust yi- macros, ehlotshaniswa ne !. Isibonelo phrinta! ukuphrinta kukhonsoli. Zivumela ukukhiqizwa kwekhodi ngesikhathi sokuhlanganisa futhi ziwusizo ikakhulukazi ekwenzeni imisebenzi ephindaphindwayo.
Izakhiwo (izakhiwo) kanye nokubala (enums)
I-Las izakhiwo ku-Rust ikuvumela ukuthi udale izinhlobo zedatha yangokwezifiso:
isakhiwo Isikhundla {x: i32, y: i32, } let point = Isikhundla {x: 10, y: 20};
Izakhiwo zingadalwa ama-tuple structs (izinkambu ezingashiwongo) noma izakhiwo ezinezinkambu eziqanjwe igama. Ngaphezu kwalokho, ukwengeza umshicileli emasimini, lezi zenziwa esidlangalaleni ngaphandle kwemojula yamanje.
I-Los enum Zikuvumela ukuthi uchaze uhlobo olungaba okukodwa kokuhlukile okumbalwa, 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
E-Rust i-null ayikho. Kunalokho, i- enum Inketho ukuveza ukuthi inani lingaba khona yini (Okunye(inani)) noma engekho (None):
vumela inombolo = Abanye(42); ungavumeli lutho: Inketho = Akukho;
Ukuze usebenze nge-Option kufanele uvule inani ngezindlela ezinjengokuthi qaqa () (qaphela, kungase kuhluleke None) noma qaqa_noma(inani_elimisiwe). Okungcono nakakhulu ukusebenzisa ukufana kwephethini ukumboza wonke amacala:
fanisa inombolo { Some(n) => println!("Inani lithi {}", n), None => println!("Alikho inani"), }
Ukufanisa Iphethini Nokulawula Ukugeleza
El ukufana kwephethini Ingenye yezinto eziyigugu ze-Rust, ekuvumela ukuthi uphathe amathuba ahlukene ngokuphepha nangokucacile nomsebenzisi. Fanisa:
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 ne-syntax elula nge uma uvuma, iwusizo uma kunendaba eyodwa kuphela enentshisekelo:
if let Some(value) = option {println!("Inani lamanje: {}", inani); }
Izindlela, imisebenzi ehambisanayo nokuvalwa
Ukusebenzisa igama elingukhiye impl Ungangeza izindlela nemisebenzi ehambisanayo kuma-structs nama-enum. Ngokwesibonelo:
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; }}
I-Las ukuvalwa noma imisebenzi engaziwa ikuvumela ukuthi uthwebule okuguquguqukayo kwendawo. Bachazwa nge |imingcele|:
vumela isici = 10; vumela_isici = |x: i32| x * isici; vumela umphumela = nge-factor_(5); // 50
Ukuhlola okuzenzakalelayo ku-Rust
Ukugqwala kuza ifakwe uhlelo ukuhlola okuhlanganisiwe. Ikuvumela ukuthi udale imisebenzi yokuhlola eduze nekhodi 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
Ukugqwala akukona nje okokusebenza kwekhonsoli. Ziyanda izinkampani kanye nabantu ngabanye abayamukelayo kumasistimu ashumekiwe, ukuhlanganiswa nezinye izilimi (ezifana neNode.js nge-Neon noma Python nge-PyO3), ukuthuthukiswa kwewebhu okubuyela emuva (enezinhlaka ezifana ne-Rocket noma i-Actix) ngisho nokudala izinhlelo ezisebenzayo qedela.
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.