Ukuphathwa kwenkumbulo okuzenzakalelayo ka-Rust kuqeda amaphutha lapho kushintshwa izikhombi futhi kuvikela ezinkingeni ezivela ekukhohlisweni kwenkumbulo yezinga eliphansi, njengokufinyelela endaweni yenkumbulo ngemva kokuba ikhululiwe, i-null pointer dereferences, i-buffer overruns, njll. Umphathi wephakheji uyathuthukiswa ukuze asabalalise imitapo yolwazi, aqinisekise ukuhlanganisa nokuphatha ukuncika ngephrojekthi.
main
- Usekelo olusetshenzisiwe lwezinhlobo
ama-arrays noma yimuphi usayizi. Ngaphambilini, ngenxa yokungakwazi ukuchaza imisebenzi ejwayelekile yawo wonke amanani aphelele, ilabhulali evamile inikeze ukusekela kwesici esakhelwe ngaphakathi kuphela kumalungu afanayo afika ku-elementi engama-32 ngosayizi (izici zosayizi ngamunye zazichazwe ngokwezibalo). Ngenxa yokwakhiwa kokusebenza kwamajenerikhi angaguquki (βconst genericsβ), kube nokwenzeka ukuchaza imisebenzi ejwayelekile yanoma yimuphi usayizi wohlu, kodwa okwamanje ayikafakwa ezicini ezizinzile zolimi, nakuba isetshenziswa kumdidiyeli futhi manjeabathintekayo kumtapo wolwazi ojwayelekile wezimpawu zamalungu afanayo anoma yimuphi usayizi.Isibonelo, ukwakhiwa okulandelayo ku-Rust 1.47 kuzophrinta okuqukethwe kwelungu elifanayo, nakuba ngaphambilini bekuzoholela ephutheni:
i-fnmain() {
vumela xs = [0; 34];println!("{:?}", xs);
} - Okukhiphayo okunikeziwe kokulandelelwa okufushane (i-backtrace), okukhiphayo ezimeni eziphuthumayo. Izinto ezingenantshisekelo kuzimo eziningi, kodwa ezihlanganisa okukhiphayo futhi ziphazamise ukunaka ezimbangela eziyinhloko zenkinga, azifakwa ekulandeleni. Ukuze ubuyisele umkhondo ogcwele, ungasebenzisa okuguquguqukayo kwemvelo "RUST_BACKTRACE=full". Isibonelo, ngekhodi
i-fnmain() {
uvalo!();
}Ngaphambilini, umkhondo wawuphuma ngezigaba ezingu-23, kodwa manje uzoncishiswa
Izinyathelo ezi-3 ezikuvumela ukuthi ubambe ingqikithi ngokushesha:uchungechunge 'oluyinhloko' luthuke ngokuthi 'ukwethuka okusobala', src/main.rs:2:5
isitaki sangemuva:
0: std::ukwethuka::qala_ukwethuka
kokuthi/rustc/dβ¦d75a/library/std/src/panicking.rs:497
1: inkundla yokudlala::okuyinhloko
ku-./src/main.rs:2
2: core::ops::function::FnOnce::call_kanye
kokuthi/rustc/dβ¦d75a/library/core/src/ops/function.rs:227 - I-rustc compiler ibuyekeziwe ukuze yakhelwe kusetshenziswa
LLVM 11 (Ukugqwalaisebenzisa I-LLVM njenge-backend yeukukhiqizwa kwekhodi ). Ngasikhathi sinye, ikhono lokwakha ngama-LLVM amadala, kuze kufike kunguqulo 8, liyagcinwa, kodwa ngokuzenzakalelayo (kurust-lang/llvm-project ) manje isebenzisa i-LLVM 11. I-LLVM 11 kulindeleke ukuthi ikhishwe ezinsukwini ezizayo. - Kuplathifomu ye-Windows, i-rustc compiler inikeza ukwesekwa kokuvumela ukuhlola ubuqotho bokulawula ukugeleza (Control Flow Guard), okwenziwa kusebenze kusetshenziswa ifulege elithi β-C control-flow-guardβ. Kwezinye izinkundla leli fulegi alinakiwe okwamanje.
- Ingxenye entsha yama-API idluliselwe esigabeni esizinzile, okuhlanganisa nokuzinza
I-Ident::okusha_okuluhlaza,
Ibanga::alinalutho,
Ibanga elihlanganisiwe::alinalutho,
Umphumela::as_deref,
Umphumela::as_deref_mut,
Vec::vuza,
isikhombi::offset_from,
f32::TAU kanye
f64::TAU. - Isibaluli esithi "const", esinquma ukuthi kungenzeka yini ukusisebenzisa kunoma yimuphi umongo esikhundleni sama-constants, sisetshenziswa ezindleleni:
- entsha yawo wonke izinombolo ngaphandle kweziro;
- checked_add, checked_sub, checked_mul, checked_neg, checked_shr, saturating_add, saturating_sub kanye ne-saturating_mul yawo wonke izinombolo;
- is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace and is_ascii_ucontrol.
- Okwe-FreeBSD
abathintekayo ikhithi yamathuluzi evela ku-FreeBSD 11.4 (I-FreeBSD 10 ayisekeli i-LLVM 11).
Source: opennet.ru