Koyarwar Tsatsa: Tsaron Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwaƙwalwa na Ƙwaƙwalwa na Ƙwaƙwalwa )

Sabuntawa na karshe: 04/12/2025
Author: Ishaku
  • Tsatsa yana tabbatar da amincin ƙwaƙwalwar ajiya yayin haɗawa ta hanyar mallaka, rance, da tsawon rayuwa, ba tare da amfani da tarin shara ba.
  • Nau'in tsarin da ƙa'idodin ƙayyadaddun ƙa'idodin suna ba da izinin daidaitawa ba tare da tseren bayanai ta amfani da mutexes, tashoshi, da masu nuni ba.
  • Kaya, crates.io, da tsarin muhalli mai aiki suna sauƙaƙe sarrafa dogaro, haɗawa, gwaji, da turawa.
  • Fahimtar tsari, ƙididdiga, Zaɓuɓɓuka, da Sakamako shine maɓalli don sarrafa kurakurai da yin ƙirar bayanan aminci a aikace-aikacen lokaci guda.

Harshen shirye-shirye na C vs Tsatsa: fa'idodi da rashin amfani

Tsatsa ya zama ɗaya daga cikin waɗannan harsunan Kowane mai haɓaka tsarin yana ƙarasa jin sa akai-akai.Yana da sauri kamar C da C++, amma tare da kusan karkatar da hankali kan amincin ƙwaƙwalwar ajiya da aiwatar da daidaitattun daidaito. Wannan ba tallace-tallacen fanko ba ne kawai: ƙirar sa ta dogara ne akan mai tarawa yana gano kurakurai a lokacin tattarawa — kurakurai waɗanda a cikin wasu harsuna kawai kuke gani lokacin da tsarin ya riga ya fara aiki… ko kuma lokacin da ya fado.

Idan kuna sha'awar fahimta Yadda Tsatsa ke samun amintaccen ƙwaƙwalwar ajiya ba tare da tarin datti ba kuma ba tare da tsoron gudanar da bayanai baWannan koyaswar naku ne. Za mu rufe komai daga tushe na harshe da yanayin yanayinsa zuwa mahimman ra'ayoyi kamar mallaka, rance, nau'ikan nau'ikan kayan aiki, kayan aiki kamar Cargo, har ma da kallon nau'ikan atomic da kullewa daga mafi kyawun hangen nesa ga waɗanda sababbi don daidaitawa, duk tare da mai da hankali kan tsaro da aiki.

Koyarwar Tsatsa: Ayyuka, Tsaron Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwaƙwalwa na Ƙwaƙwalwa na Ƙaƙwalwa )

Tsatsa yaren shirye-shirye ne shirin maƙasudi na gaba ɗaya da nau'i-nau'i masu yawa, an tsara su don shirye-shiryen ƙananan matakan tsare-tsare da kuma na manyan ayyukadaga tsarin aikiDaga injunan wasa da masu bincike zuwa ayyukan gidan yanar gizo masu inganci, ya samo asali ne daga Mozilla da manufar inganta tsaro na software, musamman a cikin abubuwan da suka dace kamar injin bincike.

Ma'anar siffarsa ita ce yana ba da garantin amincin ƙwaƙwalwar ajiya a lokacin haɗawa ba tare da amfani da mai tara shara ba. Madadin haka, Rust yana amfani da tsarin mallakar mallaka da mai duba rance wanda ke bibiyar rayuwar kowane ƙima da nassoshi. Wannan yana guje wa matsaloli na yau da kullun kamar masu nunin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin ɗimbin yawa, ambato mai ɓarna, ko ƙwanƙwasa ƙwaƙwalwar ajiya ba tare da buƙatar ƙidayar magana ta atomatik ko tarin shara ba.

Bugu da ƙari, Rust an tsara shi don sauƙaƙe shi aminci concurrencyNau'in sa da samfurin mallakar sa yana hana tseren bayanai tsakanin zaren, aƙalla yayin da ya rage cikin amintaccen lambar tsatsa. Wannan yana nufin cewa ana gano yanayi masu haɗari da yawa a lokacin tattarawa, kafin a aiwatar da layi ɗaya.

Domin duk waɗannan dalilai, manyan kamfanoni kamar Dropbox, Microsoft, Amazon ko Google Sun ɗauki Tsatsa a cikin mahimman sassa na kayan aikin su. Kuma ba kwatsam ba ne cewa ya mamaye zaben Stack Overflow na shekaru a matsayin daya daga cikin harsunan "mafi so" ta masu haɓakawa: yana haɗa wasan kwaikwayon C ++ tare da kayan aikin zamani (Cargo, crates.io) da kuma al'umma mai aiki sosai, waɗanda ake kira Rustaceans.

Ka'idoji na asali: harshe shirye-shirye, nau'ikan da ƙwaƙwalwar ajiya

Kafin zurfafa cikin ƙayyadaddun ƙayyadaddun tsaro na ƙwaƙwalwar ajiya da haɗin kai, yana da kyau a fayyace wasu ƙa'idodi na gaba ɗaya waɗanda ke bayyana a ko'ina el tiempo Lokacin aiki tare da Rust. musamman idan kun fito daga wasu harsuna ko kuma kun fara shirin.

Harshen shirye-shirye shine, a ƙarshe, saitin dokoki da tsarin da ke ba ka damar kwatanta algorithms da canza su zuwa shirye-shirye masu aiwatarwa. Tsatsa yana haɗa lambar injin na asali ta amfani da mai tarawa rustcDon haka, aikin da kuke samu yawanci yana daidai da C da C++.

Gudanar da ƙwaƙwalwar ajiya shine tsarin da shirin tanadi da sakin tubalan ƙwaƙwalwar ajiya yayin gudanaKurakurai a cikin wannan yanki galibi suna mutuwa: ƙwanƙwasa ƙwaƙwalwar ajiya (kasa sakin ƙwaƙwalwar da ba a yi amfani da ita ba), lalata bayanai daga rubuce-rubucen da ba a iya amfani da su ba, ko amfani da ƙwaƙwalwar ajiya bayan an 'yantar da su. Tsatsa tana magance wannan tare da tsarin nau'i mai ƙarfi sosai da ƙa'idodi na yau da kullun don mallaka, rance, da rayuwa.

Tsatsa kuma yana fasalta sharuddan kamar nau'ikan wayo da masu nuniNau'i yana bayyana irin nau'in bayanan da ma'auni ke adanawa (Integers, floats, kirtani, sifofi, da sauransu) da kuma yadda za'a iya sarrafa shi. Smart pointers (misali, Box, Rc y Arc) sifofi ne waɗanda ke tattara adiresoshin ƙwaƙwalwar ajiya kuma suna ƙara ƙarin dabaru don sarrafa albarkatu cikin aminci, kamar ƙidaya nassoshi masu alaƙa ko motsi dabi'u zuwa tsibi.

A fagen gasa, ra'ayoyi irin su yanayin tsere, mutexes, da tashoshi Sun zama ba makawa: yanayin tsere yana faruwa lokacin da zaren da yawa ke shiga kuma suna canza hanyar da aka raba lokaci guda ba tare da daidaitawar da ta dace ba; wani mutex (keɓance juna) yana tabbatar da cewa zaren guda ɗaya kawai ya shiga sashin mahimmanci a lokaci guda; kuma tashoshi suna ba da damar aika saƙonni tsakanin zaren ba tare da raba ƙwaƙwalwar kai tsaye ba.

Me yasa koyan Tsatsa: Amintaccen ƙwaƙwalwar ajiya da rashin tsoro

Tsatsa ya sami shahara saboda yana bayarwa ginshiƙai uku masu matuƙar daraja don shirye-shiryen zamaniAyyuka, tsaro, da kayan aikin yanzu. Bari mu ga dalilin da ya sa waɗannan batutuwa suka dace.

Game da aiki, Rust ya tattara kai tsaye zuwa binaries na asali ba tare da buƙatar na'ura mai mahimmanci ko mai fassara ba. Samfurin sifili-cost abstractions yana da nufin tabbatar da cewa manyan matakan abstractions ba su ƙara sama sama a lokacin aiki ba. Saboda haka, yana da manufa don ci gaban tsarin. wasanni bidiyo, abubuwan binciken burauza ko ƙananan ayyukan microservices.

Tsaron ƙwaƙwalwar ajiya yana dogara ne akan sa tsarin mallaka da lamuniBabu mai tattara shara, amma mai tarawa ya san ainihin wanda ya mallaki kowace albarkatu, lokacin da ba a buƙata, da kuma lokacin da za a iya sakin ta. Wannan yana hana leaks, dangling pointers, da yawancin kurakuran da suka sanya shirye-shiryen C da C++ a al'ada suna da haɗari sosai.

A fannin gasa, Rust yana bin abin da ake kira da yawa "concurrency ba tare da tsoro"Nau'in tsarin da kansa yana hana tushen bayanai daga kasancewa cikin amintaccen lamba. Idan kuna son raba bayanan da za'a iya canzawa tsakanin zaren, kuna buƙatar amfani da abubuwan da suka dace kamar su Mutex, RwLock o Arc, kuma mai haɗawa zai tabbatar da cewa an mutunta ƙa'idodin ƙa'ida da mutability.

  Yadda ake lalata Windows da Malwarebytes mataki-mataki

An haɓaka ƙwarewar haɓakawa tare da kayan aikin zamani kamar ofishinYana fasalta manajan fakiti mai haɗaka da gina ababen more rayuwa, da faffadan yanayi na ɗakunan karatu (akwatuna) waɗanda ke rufe komai daga sadarwar asynchronous (Tokyo) zuwa tsarin gidan yanar gizo (Actix, Rocket, Axum). Duk waɗannan ana samun goyan bayan buɗaɗɗiyar jama'a, ƙwararru, kuma masu haƙuri, musamman ga masu farawa.

Shigarwa da kayan aiki masu mahimmanci: rustup, rustc da Cargo

Don rubuta da gudanar da shirye-shiryenku na farko a cikin Rust, hanyar da aka saba farawa ita ce ta shigar da sarkar kayan aiki ta amfani da rutu (duba cikin Cikakken gabatarwa ga Tsatsa), mai sauƙi mai sauƙi da mai sarrafa sigar da ke aiki akan duk manyan tsarin aiki.

con rutu Kuna iya shigarwa, sabuntawa, da canzawa tsakanin nau'ikan tsatsa daban-daban (bargare, beta, dare) ba tare da karya komai ba. Kawai je zuwa shafin kayan aikin Rust na hukuma kuma bi matakan tsarin ku. Da zarar an shigar, za a samu mai tarawa. rustc, Manajan aikin cargo da nasa rustup a cikin ku m.

mai tarawa rustc Abin da ke canza lambar tushen ku zuwa binaries ko ɗakunan karatu masu aiwatarwa. Ko da yake kuna iya kiran shi kai tsaye da umarni kamar yadda rustc main.rsA aikace, kusan koyaushe zaku yi aiki ta hanyar Cargo, wanda ke ɗaukar kiran zuwa rustc tare da zaɓuɓɓukan da suka dace.

Babban kayan aiki na aikin aiki shine ofishinTare da ƴan umarni kawai, zaku iya ƙirƙirar sabbin ayyuka, sarrafa abubuwan dogaro, haɗawa, gudanar, gwadawa, da buga fakiti akan crates.io. Wasu umarni na asali da aka saba amfani da su sune: cargo new, cargo build, cargo run, cargo test y cargo check, wanda ke bincika lambar ba tare da samar da aikin ƙarshe ba, manufa don gano kurakurai da sauri.

Idan kuna son yin tinker ba tare da shigar da komai ba, Tsatsa filin wasa (mai aiwatar da aikin kan layi) da dandamali kamar Replit suna ba ku damar rubutawa da gudanar da ƙananan lambobi daga mai binciken, cikakke don gwaji tare da ƙwaƙwalwar ajiya da misalan ƙima ba tare da saita yanayin gaba ɗaya ba.

Shirinku na farko: Sannu, Tsatsa, da kwararar asali

Hanyar gargajiya don fara tattaunawa a kowane harshe shine tare da sanannen "Sannu, duniya." A cikin Rust, fayil main.rs aƙalla zai iya ƙunsar wani abu mai sauƙi kamar aiki main wanda ke buga kirtani akan allon.

Mabuɗin kalmar fn yana nuna cewa muna ayyana aiki, kuma main Wannan ita ce mashigar shigar shirin. Toshe lambar aikin yana shiga cikin takalmin gyaran kafa. Don rubuta zuwa na'ura wasan bidiyo, yi amfani da Macro println!, wanda ke karɓar kirtani na zahiri (ko samfuri tare da alamun shafi) kuma ya aika shi zuwa daidaitaccen fitarwa yana ƙarewa a cikin sabon layin layi.

Idan kun hada kai tsaye da rustc main.rs, za ku sami binary mai aiwatarwa (misali, main o main.exe (dangane da tsarin). Lokacin da kuka kunna shi, zaku ga sakon a cikin tashar. Amma hanyar da za a yi aiki tare da Rust ita ce barin Cargo ya jagoranci aikin.

con cargo new nombre_proyecto Ana ƙirƙira tsarin babban fayil ta atomatik tare da a src/main.rs riga an shirya tare da "Sannu, duniya" da fayil Cargo.toml wanda ya ƙunshi metadata da abubuwan dogaro na gaba. Daga nan, cargo run tattara kuma gudanar da binarykuma yana sake tattarawa ne kawai lokacin da ya gano canje-canje.

Wannan hanyar aiki ba kawai dacewa ba ce, amma yana sa ku saba da yin amfani da daidaitattun yanayin yanayin Rust tun daga farko, wanda ke da amfani sosai lokacin da kuka fara ƙara akwatuna don daidaitawa, hanyar sadarwa, gwaji, ko duk abin da kuke buƙata.

// Muna ayyana babban aikin: wurin shigar shirin fn main() {// Muna amfani da println! macro don buga rubutu zuwa println na'ura wasan bidiyo!("Hello, duniya!"); }

Sauye-sauye, mutability, da nau'ikan bayanai na asali

A cikin Rust, ana bayyana masu canji tare da kalmar maɓalli let, kuma ta hanyar tsoho ba su canzawaA wasu kalmomi, da zarar kun sanya musu ƙima, ba za ku iya gyara ta ba sai kun bayyana shi a fili a matsayin mai canzawa tare da mut.

Rashin canzawa ta tsohuwa yana taimakawa guje wa kurakuran dabaru, musamman a cikin shirye-shiryen lokaci guda inda zaren da yawa zasu so su canza ƙima ɗaya. Idan kana buƙatar canza shi, ka rubuta wani abu kamar let mut contador = 0;Daga nan zaku iya sake sanya sabbin dabi'u zuwa contador.

Tsatsa kuma yana ba da damar abin da ake kira inuwaKuna iya ayyana sabon maɓalli mai suna iri ɗaya a cikin iyaka iri ɗaya, yana ɓoye wanda ya gabata. Wannan ba daidai yake da mutating ba, saboda kuna ƙirƙirar sabon ƙima (wanda zai iya zama nau'i daban-daban). Misali, zaku iya jujjuya daga kirtani zuwa lamba ta amfani da suna iri ɗaya, in dai sabuwar sanarwa ce. let.

Tsarin nau'in tsatsa yana tsaye, wanda ke nufin haka Nau'in kowane maɗaukaki an san shi yayin haɗawaDuk da haka, nau'in ƙaddamarwa yana da ƙarfi sosai: idan kun rubuta let x = 5;Mai tarawa yana ɗauka cewa a i32 Sai dai in ba haka ba. Kuna iya ƙara bayanin kula kamar let x: i64 = 5; lokacin da kake son bayyanawa.

Daga cikin nau'ikan sikelin da ake da su akwai sa hannu da lambobi marasa sa hannu (i8, u8, i32, da sauransu), masu iyo (f32, f64), da Booleans (bool) da haruffan Unicode (char). Waɗannan nau'ikan masu sauƙi galibi suna da arha don kwafi kuma da yawa suna aiwatar da yanayin Copywanda ke nufin cewa lokacin da kuka sanya su ko aika su zuwa wani aiki, ana kwafi su maimakon motsawa.

Zaɓuɓɓuka a cikin Tsatsa: & str da String

Gudanar da rubutu a cikin Rust na iya zama ɗan ruɗani da farko saboda yana bambanta tsakanin sarkar “yanka” da sarkar mallakar mallakaMabuɗin guda biyu sune &str y String.

Un &str ne mai yanki na sarkar mara canzawaDuban jerin byte UTF-8 da aka adana a wani wuri. Misalai na yau da kullun sun haɗa da zahiri kamar "Hola"wanda nau'in ne &'static str (Suna wanzu don dukan rayuwar shirin kuma an saka su a cikin binary.) Yanki ba su mallaki bayanan ba; kawai suna nuni da shi.

  Yadda ake keɓance shingen ɗawainiya sosai a cikin Windows 11: Cikakken jagora da nasihun ci-gaba

String, a daya bangaren kuma, a kirtani na kansa, mai canzawa kuma an shirya shi a cikin tuduAna iya daidaita shi, daidaitawa, wuce tsakanin ayyuka ta hanyar motsa kayan sa, da sauransu. Ana amfani da shi sau da yawa lokacin da kake son gina rubutu mai ƙarfi ko adana shi na dogon lokaci a cikin tsarin.

A cikin yanayi da yawa za ku canza tsakanin ɗaya da ɗayan: misali, zaku ƙirƙiri a String::from("hola") daga yankiko za ku aro a &str a String ta hanyar wucewa nassoshi zuwa ayyuka waɗanda kawai ke buƙatar karantawa.

Wannan rarrabuwa tsakanin bayanan mallakar da aro shine mabuɗin sarrafa ƙwaƙwalwar ajiya kuma ya wuce zuwa sauran harshe: tarin, tsari, da ƙididdiga suna bin ra'ayoyi iri ɗaya na wanda ya mallaka da wanda kawai yake kallo.

Ayyuka, sarrafa kwarara, da sharhi

Ana bayyana ayyuka a cikin Tsatsa tare da fn da kuma ba da damar shirya shirin zuwa raka'a masu ma'ana da za a sake amfani da su. Kowane aiki yana ƙayyade nau'in sigoginsa da nau'in dawowarsa bin kibiya ->Idan bai dawo da wani abu mai ma'ana ba, ana ɗaukar nau'in haɗin kai. ().

Wani muhimmin daki-daki shi ne cewa magana ta ƙarshe a cikin aiki (ko kowane toshe) ba tare da wani yanki ba ana ɗaukar shi azaman ƙimar dawowa a fakaice. Kuna iya amfani da return don dawowa da wuriAmma a cikin lambar idiomatic, sau da yawa kawai kuna barin magana ta ƙarshe ba tare da. ;.

Ana sarrafa kwararar sarrafawa tare da kayan gargajiya if/elsemadaukai loop, while y forA cikin Rust, if Magana ce mai mayar da kimadon haka zaka iya amfani da shi kai tsaye a cikin a letmuddin rassan sun dawo iri daya. madaukai for Yawancin lokaci suna jujjuya jeri ko na'urori masu tarin yawa kuma zaɓi ne shawarar maimakon firikwensin hannu.

Don rubuta lambar kuma sauƙaƙe rayuwa ga duk wanda ya zo bayan (ciki har da kanku a cikin wata ɗaya), kuna iya amfani da su layi comments tare da // ko toshe tare da /* ... */Bugu da kari, Rust yana ba da sharhin takardu tare da /// wanda ya zama takardun da aka samar, kodayake wannan ya fi dacewa da manyan ayyuka.

Mallaka, ba da lamuni, da rayuwa: tushe na tsaro na ƙwaƙwalwar ajiya

A nan mun isa a zuciyar tsarin ƙwaƙwalwar Rust: tsarin mallaka, rance, da kuma rayuwaWaɗannan ƙa'idodin suna tabbatar da cewa nassoshi koyaushe suna aiki kuma ana fitar da ƙwaƙwalwar ajiya cikin aminci ba tare da tara datti ba.

Ka'idojin mallakar mallaka suna da sauƙi don bayyana, kodayake suna iya zama da wahala a fara shiga ciki: Kowace ƙima tana da mai shi guda ɗaya.Za a iya samun mai gida ɗaya kawai a lokaci guda; kuma idan mai shi ya bar iyakarsa, darajar ta lalace kuma a saki ƙwaƙwalwarta. Wannan ya shafi, misali, ga a String: bayan kammala shingen da aka ayyana shi, ana kiransa ta atomatik drop wanda ke 'yantar da ƙwaƙwalwar ajiya.

Lokacin da kuka sanya ƙimar da ta dace ga wani maɓalli ko wuce ta ƙimar zuwa aiki, ana motsa kayan. Wannan yana nufin haka ainihin canjin canjin ya daina aiki bayan motsiWannan fassarar motsin motsi yana guje wa sakewa sau biyu, saboda babu masu biyu da ke ƙoƙarin sakin albarkatu iri ɗaya.

Don ƙyale sassa da yawa na shirin don samun damar ƙima iri ɗaya ba tare da canza ikon mallaka ba, Rust yana gabatar da nassoshi da aro. Lokacin da kake rance, za ka ƙirƙiri tunani &T (mai canzawa) ko &mut T (mai canzawa) zuwa ƙimar ba tare da canja wurin mallaka ba. An iyakance lamuni ta hanyar ka'idodin tabbatar da lamuni., wanda ke bincika cewa nassoshi ba su wuce bayanan da suke nunawa ba kuma masu iya canzawa da hanyoyin shiga ba su gauraya cikin haɗari ba.

Za a iya taƙaita ƙa'idodin lamuni kamar haka: a kowane lokaci, kuna iya samun ko dai nassoshi masu yawa marasa canzawa zuwa daraja, ko Magana guda ɗaya mai canzawaAmma ba duka a lokaci guda ba. Wannan yana kawar da yanayin tsere a cikin ƙwaƙwalwar ajiyar da aka raba: ko dai akwai masu karatu da yawa, ko kuma akwai keɓaɓɓen marubuci; ba tare da masu karatu da marubuta ba a lokaci guda akan bayanai iri ɗaya a lokaci guda.

Nau'o'in haɗin kai: structs, enums, da masu nuna wayo

Tsatsa yana ba da hanyoyi da yawa don haɗa bayanai masu alaƙa zuwa mafi kyawun tsari, farawa da tsariTsarin yana ba ku damar ayyana nau'in al'ada tare da filaye masu suna, misali mai amfani da imel, suna, matsayin aiki da ma'aunin shiga.

Don ƙirƙirar misali na tsarin, kun cika dukkan filayensa, kuma kuna iya yiwa mabambancin da ke ɗauke da shi alama mai canzawa don canza ƙimar sa daga baya. Hakanan akwai tsarin sabunta tsarin, wanda ke ba ku damar gina sabon misali ta hanyar sake amfani da wasu filayen daga wanda yake. ..otro_struct.

da enums Su wani ginshiƙi ne mai mahimmanci: suna ba ku damar ayyana nau'in da zai iya zama ɗaya daga cikin bambance-bambancen da yawa, kowanne tare da bayanan da ke da alaƙa ko ba tare da shi ba. Misali na yau da kullun shine lissafin adiresoshin IP, tare da bambance-bambancen guda ɗaya V4 wanda ke adana octets hudu da wani V6 wanda ke adana kirtani tare da alamar IPv6.

Madaidaicin ɗakin karatu na Rust ya ƙunshi ƙididdiga masu mahimmanci guda biyu: Option<T> y Result<T, E>Na farko yana wakiltar kasancewar ko rashin darajar (wani abu ko babu), kuma ana amfani dashi don guje wa masu nuni mara kyau; na biyu model ayyuka da cewa iya mayar da daidai sakamako ko kuskure, yana buƙatar cewa sarrafa kuskuren ya zama bayyane kuma amintacce.

Don sarrafa ƙwaƙwalwar ajiya mai ƙarfi da raba bayanai, Rust yana da masu nuni masu kaifin basira kamar yadda Box<T>, wanda ke motsa ƙima zuwa tudun kuma yana kula da mallakar musamman; Rc<T>, Ƙididdigar ƙididdigewa ga mahalli guda ɗaya; kuma Arc<T>, kama da Rc amma lafiya ga mahara zaren. Yin amfani da su daidai yana da mahimmanci yayin haɗa ƙwaƙwalwar ajiya mai ƙarfi tare da haɗin kai.

Cargo da Crates Ecosystem

Kaya shi ne manne da ke riƙe da tsatsa tare da yanayin muhalli: yana kula da tattarawa, abin dogaro, da tsarin rayuwar aikinKowane aikin yana da fayil Cargo.toml wanda ke aiki a matsayin bayyani, yana bayyana suna, sigar, bugun harshe, da dogaro na waje.

  Kafaffen: Windows 10 Kuskuren Direba Bus na PCI

Sashe Wannan fayil ɗin yana ba ku damar lissafin akwatunan ɓangare na uku tare da nau'ikan su. Lokacin da kuke gudu cargo build o cargo runKaya yana sauke waɗannan akwatuna ta atomatik daga crates.io, tattara su, kuma yana haɗa su zuwa aikin ku. Yana da sauƙin ƙara, misali, masu samar da lambar bazuwar, tsarin gidan yanar gizo, ko ɗakunan karatu na sirri.

Daga cikin mafi yawan umarni akwai cargo new don fara ayyukan binary o cargo new --lib don dakunan karatu; cargo build don haɗawa a cikin yanayin lalata; cargo build --release don samun ingantaccen sigar da ta dace da samarwa; kuma cargo test don gudanar da baturin gwaje-gwaje.

cargo check Ya cancanci ambaton musamman: yana tattara lambar zuwa tsaka-tsaki ba tare da samar da binary ba, wanda ya sanya shi. yi saurin gano kurakuran tattarawaYana da cikakke don maimaitawa da sauri yayin da mai duba aro ke nuna matsaloli tare da kaddarorin, nassoshi, da kuma rayuwa.

Godiya ga wannan yanayin, ya zama ruwan dare don tsara ayyukan ku a matsayin ƙananan akwatunan da aka siffanta da kyau, raba lamba tsakanin su da sake amfani da hanyoyin da al'umma suka ƙirƙira. Don haɗin kai na ci-gaba, alal misali, za ku sami akwatuna kamar Tokio don shirye-shiryen asynchronous ko crossbeam don babban aiki na tsarin bayanai na lokaci guda.

Daidaitawa a cikin Tsatsa: zaren, mutexes, tashoshi, da atomics

Concurrency yana daya daga cikin dalilan da yasa Rust ke haifar da sha'awa sosai: yana ba ku damar amfani da na'urori masu sarrafawa da yawa. ba tare da faɗuwa cikin kurakurai na yau da kullun na zaren da ƙwaƙwalwar ajiya baIdan wannan shine karon farko da kuke tunkarar waɗannan batutuwa, yana da taimako don bambanta tsakanin ra'ayoyi da yawa.

Concurrency ya ƙunshi aiwatar da ayyuka da yawa waɗanda suka zo kan lokaci, ko dai a kan nau'i ɗaya ko mawaƙa. A cikin Rust, zaku iya ƙirƙirar zaren tsarin don yin aiki a layi daya, kuma yaren yana jagorantar ku don tabbatar da cewa raba bayanai tsakanin su yana da aminci. Kuskure na yau da kullun shine yanayin tsere, inda zaren guda biyu ke samun damar yin amfani da bayanai a lokaci guda, kuma sakamakon ya dogara da tsarin aiwatarwa-wani abu mai wahalar cirewa.

Don daidaita damar yin amfani da bayanan da aka raba, Rust ya dogara da abubuwan da suka dace kamar su mutexwanda ke ba da garantin keɓance juna: zare ɗaya ne kawai ke iya shigar da sashin mahimmanci a lokaci guda. A hade tare da Arc<T> Don raba ikon mallakar tsakanin zaren, yana yiwuwa a gina tsarin bayanan da aka raba waɗanda suka bi ka'idojin mallaka da aro.

Wani nau'i na gama gari na sadarwar zaren zaren, wanda aka ƙarfafa shi sosai a cikin Tsatsa, shine amfani da saƙon wucewa tashoshiTashar tana da ƙarshen aikawa da ƙarshen karɓa; zaren suna wucewa da saƙo (daraja) ta cikinsa, wanda ke rage amfani da ƙwaƙwalwar da aka raba tare da sauƙaƙa tunani game da yanayin tsarin.

Lokacin da kuka zurfafa zurfafa cikin ƙanƙantar matakin ƙima, waɗannan suna bayyana: nau'in atomicAna samun dama ga masu canjin atom ta hanyar ayyukan da ba za a iya raba su ta fuskar zare ba. Wannan yana ba da damar aiwatar da ƙididdiga masu alaƙa, tutocin jihohi, layukan da ba su kulle ba, da ƙari. Jagorar masu canjin atomatik yana buƙatar fahimtar ƙirar ƙwaƙwalwar ajiya da umarnin samun dama, don haka yawancin masu haɓakawa sun fi son farawa da mutexes da tashoshi kafin zurfafa cikin waɗannan cikakkun bayanai.

Matakai na farko da albarkatu don koyan haɗin kai da atomic

Idan kuna shiga fagen fama ba tare da gogewa ba, hanya mafi hikimar aiki ita ce gina ƙwaƙƙwaran ginshiƙan ra'ayoyi gabaɗaya kafin magance kayan aikin ci-gaba kamar nau'in atomic na Rust. Littattafai kamar "Shirye-shiryen Tsatsa" suna ba da gabatarwa a hankali, amma al'ada ne don ayyukan da aka mayar da hankali kan nau'in atomic da makullai don zama mai yawa da farko.

Don ƙarin sauƙi, yana da kyau ka fara sanin kanka da Zaren gargajiya, keɓance juna, da isar da saƙo a cikin Rust. Yi wasa da misalan std::thread, std::sync::Mutex, std::sync::Arc da tashoshi na std::sync::mpsc Yana taimaka muku fahimtar yadda mai tarawa ke jagorantar ku da irin kurakuran da yake gujewa.

A cikin layi daya, ana ba da shawarar sosai don sake nazarin albarkatun gabatarwa akan haɗin gwiwa gabaɗaya, ko da ba a mai da hankali kan Tsatsa ba: fahimtar menene yanayin tsere, menene toshewa ke nufi, abin da ƙwaƙwalwar ajiya ta haɗa yana nufin wucewar saƙo, da kuma yadda ake amfani da makullai. Da zarar waɗannan ra'ayoyin sun zama na halitta a gare ku, kimiyyar atomic ta daina zama "sihiri baƙar fata". kuma sun zama kawai wani kayan aiki, kawai mai laushi.

Lokacin da kuka dawo zuwa ƙarin ci-gaba na rubutu game da atomics da makullai a cikin Tsatsa, zai kasance da sauƙin bibiyar tunani idan kun riga kun fahimci menene matsalar kowane ginin gini ke ƙoƙarin warwarewa: daga madaidaicin zaren-aminci zuwa tsarin da ba shi da kulle-kulle wanda ke rage jayayya.

Daga ƙarshe, Rust yana ba da manyan matakan farko da kayan aikin ƙanƙanta, kuma mabuɗin shine koyaushe zaɓi mafi aminci matakin abstraction wanda ke magance matsalar ku, yin amfani da lambar atomatik. unsafe kawai lokacin da gaske yana ƙara ƙima kuma kun fahimci tasirinsa sosai.

Wannan tsarin yanayin nau'ikan nau'ikan, mallaka, rance, akwatuna, kayan aiki, da abubuwan ƙima sun haɗu don ba da yaren da za a rubuta cikinsa. software mai sauri, mai ƙarfi da kiyayewaWannan yana rage nau'ikan kurakurai da yawa waɗanda ke da matsala ta tsarin tsarin tarihi. Yayin da kuke yin aiki tare da ƙananan ayyuka, motsa jiki kamar Rustlings, da takaddun hukuma, waɗannan ra'ayoyin za su tafi daga kama da ƙayyadaddun ƙa'idodi zuwa zama abokan haɗin gwiwa waɗanda ke faɗakar da ku kafin matsalar ta kai ga samarwa.

Gabatarwa ga Harshen Tsatsa tare da misalai-0
Labari mai dangantaka:
Cikakken Gabatarwa zuwa Tsatsa: Jagorar Mafari Mai Aiki tare da Misalai