Isingeniso Esiphelele Sokugqwala: Umhlahlandlela Ongokoqobo Wabasaqalayo Onezibonelo

Isibuyekezo sokugcina: 18/06/2025
Author: Isaka
    ,
  • 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.

Isingeniso solimi lwe-Rust enezibonelo

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.
  Ungawafaka Kanjani Ama-plugin ku-GIMP: Umhlahlandlela ophelele we-Linux ne-Windows

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

Isibonelo sokwenziwa kwekhodi yokugqwala

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: Shintsha izilungiselelo zokulondoloza ezizenzakalelayo ku-Samsung J3

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.

  Qedela okokufundisa ukuze ujoyine ikhompuyutha esizindeni ku-Windows

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.