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
- Iqedwe isikhathi eside
iphutha lapho wenza ukuguqulwa phakathi kwama-integer kanye nezinombolo zamaphuzu antantayo. Njengoba i-Rust compiler isebenzisa i-LLVM njenge-backend, imisebenzi yokuguqula uhlobo yenziwa ngemiyalo yekhodi ephakathi ye-LLVM njengefptoui , ezinesici esisodwa esibalulekile - ukuziphatha okungachazwanga uma inani eliwumphumela lingangeni ohlotsheni oluqondiwe. Isibonelo, lapho uguqula inani le-float engu-300 ngohlobo lwe-f32 ukuze lube uhlobo oluphelele u8, umphumela awubikezeli futhi ungase uhluke kumasistimu ahlukene. Inkinga ukuthi lesi sici sivela kukhodi engaphawulwanga ngokuthi “ayiphephile”.Kusukela ku-Rust 1.45, ukuziphatha kosayizi wokuchichima kohlobo kulawulwa ngokuqinile, futhi umsebenzi wokuguqulwa "njengoba" uhlola ukuchichima futhi uphoqa inani ukuthi liguqulwe libe inani eliphakeme noma eliphansi lohlobo oluqondiwe (ngokwesibonelo esingenhla, inani 300 izoguqulelwa ku-255). Ukuze ukhubaze ukuhlola okunjalo, amakholi e-API engeziwe “{f64, f32}::to_int_unchecked” anikezwa, asebenza ngemodi engaphephile.
i-fn cast(x: f32) -> u8 {
x u8
}i-fnmain() {
let too_big = 300.0;
let too_small = -100.0;
vumela nan = f32::NAN;vumela x: f32 = 1.0;
vumela y: u8 = akuphephile {x.to_int_unchecked()};println!("too_big_casted = {}", cast(too_big)); // okukhiphayo 255
println!("too_small_casted = {}", cast(kakhulu_kancane)); // okukhiphayo 0
println!("not_a_number_casted = {}", cast(nan)); // okukhiphayo 0
} - Sebenzisa uzinzile
amamakhro enqubo izinkulumo ezifana nomsebenzi, izifanekiso, nezitatimende. Ngaphambilini, ama-macros anjalo awakwazanga ukubizwa yonke indawo, kodwa kuphela ezingxenyeni ezithile zekhodi (njengocingo oluhlukile, olungahlangene namanye amakhodi). Ukwandisa indlela ama-macros angabizwa ngayo, afana nemisebenzi, bekungenye yezidingo zokwenza uhlaka lwewebhu lusebenze.rocket ekukhishweni okuzinzile kwe-Rust. Ngaphambilini, ukuzuza ukuguquguquka okwengeziwe ekuchazeni izibambi ku-Rocket kwakudingeka ukunika amandla isici sokuhlola esibizwa ngokuthi “proc_macro_hygiene”, esingatholakali kuzinguqulo ezizinzile ze-Rust. Lokhu kusebenza manje kwakhelwe ekukhishweni okuzinzile kolimi. - Kuvunyelwe ukusebenzisa ububanzi obunohlobo oluthi “char” ukuze kuphindwe kumanani obubanzi (ama-ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):
kwe-ch in ‘a’..=’z’ {
phrinta!("{}", ch);
}
phrinta!(); // Izophrinta "abcdefghijklmnopqrstuvwxyz" - Ingxenye entsha yama-API idluliselwe esigabeni esizinzile, okuhlanganisa nokuzinza
I-Arc::as_ptr,
I-BTreeMap::susa_ukungena,
Rc::as_ptr,
rc::Buthaka::as_ptr,
rc::Buthaka::kusuka_kuluhlaza,
rc::Buthaka::okungavuthiwe,
str::strip_prefix,
str::strip_suffix,
ukuvumelanisa::Buthaka::njengoba_ptr,
ukuvumelanisa::Buthaka::kusuka_kuluhlaza,
ukuvumelanisa::Buthaka::okungahluziwe,
char::UNICODE_VERSION,
Isikhathi::kuxazululiwe_ku,
Isikhathi::kukhona_ku,
Isikhathi::isayithi_elixubile,
unix::process::CommandExt::arg0. - I-rustc compiler yengeze usekelo lokweqa izici zeplathifomu eziqondiwe ezihlukahlukene kusetshenziswa ifulege "lesici esiqondiwe", isibonelo, "-C target-feature=+avx2+fma". Amafulegi amasha nawo engeziwe:
"phoqelela ukuqaqa-amathebula" ukuze kukhiqizwe amathebula okushaya ucingo, kungakhathaliseki isu lokusingatha ukuphahlazeka; "shumeka-bitcode" ukuze ulawule ukuthi i-bitcode ye-LLVM ifakiwe yini kuma-rlibs akhiqiziwe. Ifulegi elithi "shumeka-bitcode" linikwe amandla ngokuzenzakalela ku-Cargo ukuze kulungiselelwe isikhathi sokwakha nokusetshenziswa kwesikhala sediski. - Izinga lesithathu losekelo linikelwe izinkundla ze-mipsel-sony-psp kanye ne-thumbv7a-uwp-windows-msvc. Izinga lesithathu libandakanya ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo nokushicilelwa kwezakhiwo ezisemthethweni.
Ukwengeza, kungaphawulwa
I-athikili ingeyokuqala ochungechungeni olunikezelwe ekuboniseni amasu adingeka ezinhlelweni ezisezingeni eliphansi kanye nokuthuthukiswa kwe-OS.
Source: opennet.ru