Rust's otomatiki ndangariro manejimendi inosunungura mugadziri kubva pakugadzirisa pointer uye inodzivirira kubva kune yakaderera-level ndangariro manipulation, senge mushure-yemahara memory yekuwana, null pointer dereferences, buffer overruns, nezvimwe. Maneja wepakeji ari kugadzirwa kugovera maraibhurari, kuona kuungana uye kugadzirisa zvinovimbika neprojekiti.
chikuru
-
Added rutsigiro rwematemplate ekufananidza zvikamu zvezvimedu (dynamic arrays, slice). Pakutanga, machisi chaiwo aibvumidzwa, asi ikozvino zvinogoneka kushandisa zvivakwa zvakatemwa ".." kuvhara izvo zvakasara zveiyo array. Semuyenzaniso:fn foo(mashoko: &[&str]) {
fananidza mazwi {// inotarisa kutanga kweiyo array uye inofuratira
zvinhu zvinovatevera
["Mhoro", "Nyika", "!", ..] => println!("Mhoro Nyika!"),// inotarisa zvinhu zviviri zvekutanga "Foo" uye "Bar", uye zvimwe zvose hazvina kukosha
["Foo", "Bar", ..] => println!("Baz"),// kufuratira zvese, asi chinhu chekupedzisira chinofanira kunge chiri "!".
[.., β!β] => println!(β!!!β),// muchikamu chekutanga tinosanganisira zvese kunze kwechinhu chekupedzisira, chinofanira kunge chiri "z"
[tanga @ .., "z"] => println!("inotanga na: {:?}", tanga),// muchikamu chekupedzisira tinoisa zvinhu zvose kunze kwechinhu chekutanga, chinofanira kuva "a".
["a", end @ ..] => println!("inopera na: {:?}", end),zorora => println!("{:?}", zorora),
}
} - Yakawedzera macro "matches!", iyo inotora chirevo uye pateni sekuisa, uye inodzosera "chokwadi" kana pateni ichienderana nekutaura. Iyo template inogona kushandisa "|" mashandiro uye "kana".
match self.partial_cmp(zvimwe) {
Vamwe (Zvishoma) => chokwadi,
_ => nhema,
}match!(self.partial_cmp(zvimwe), Zvimwe(Zvishoma))
let foo = 'f';
kusimbisa!(matches!(foo, 'A'..='Z' | 'a'..='z'));regai bhari = Vamwe(4);
assert!(matches!(bar, Some(x) kana x > 2)); - Mukuvhunduka mameseji anoratidzwa kana akashandiswa zvisizvo
mhando Sarudzo uye Mhedzisiro, ikozvino ratidza nhamba dzemitsara ine chinongedzo kune kodhi iyo yakaita dambudziko rekufona, pane zvinongedzo kune kodhi kuita iyo yekufona mu libcore. Semuyenzaniso, shanduko inokanganisa mafoni ekuvhura uye kutarisira pamusoro peSarudzo::Hapana, kana kubondera paunenge uchishandisa unwrap_err, tarisira, tarisira_err, nedzimwe nzira dzakafanana pamhando yeChinyorwa. - Iyo Cargo package maneja inopa otomatiki kutsiva kwe "proc_macro crate" mu "yekunze" block yemapakeji ane procedural macros. Shanduko iyi inobvumira iyo "kushandisa" rairo kuti rishandiswe kune maitiro macros pasina kudoma "extern crate proc_macro;" mukodhi. Semuenzaniso, kana chirongwa chikashandisa mutsara "shandisa proc_macro::TokenStream;", ipapo kodhi icharamba ichishanda kana "extern crate proc_macro;" ikabviswa pairi.
- Kugona kweraibhurari yakajairika kwakawedzerwa. In iter::Empty
akawedzera Tumira uye Sync rutsigiro kune chero T kukosha.
Anofona Pini::{mepu_haina kutariswa, mepu_unchecked_mut}delivered kubva pakudzosa kukosha kwerudzi rwe "Size" kuita.
In io::Chitukoitwa PartialEq uye Eq. Iyo "const" hunhu inosarudza mukana wekushandiswa mune chero mamiriro pachinzvimbo chekugara,kushandiswa yeChimiro ::nzira itsva. - Chikamu chitsva cheAPI chaendeswa kuchikamu chakagadzikana, kusanganisira yakagadzikana CondVar ::wait_while, CondVar::wait_timeout_while,
DebugMap::kiyi, DebugMap::kukosha,
ManuallyDrop ::tora,
ptr::slice_from_raw_parts_mut and ptr::slice_from_raw_parts. - Kukanganisa::tsanangudzo nzira yarambwa.
- Yakapihwa yechipiri nhanho rutsigiro rwearv7a-none-eabi uye riscv64gc-isingazivikanwe-linux-gnu mapuratifomu. Tsigiro yeraibhurari yakajairwa yeriscv64gc-isingazivikanwe-linux-gnu chikuva yakapihwa.
Apple 32-bit mapuratifomudemoted kusvika padanho rechitatu retsigiro, izvo zvinoreva kutsigirwa kwekutanga, asi pasina otomatiki kuyedzwa uye kuburitswa kwevakuru kuvaka. Kudzikira mukutsigira kunokonzerwa nekuti Apple haichatsigire 32-bit mapuratifomu.
Source: opennet.ru