Rust's otomatiki ndangariro manejimendi inobvisa zvikanganiso kana ichishandisa anongedza uye inodzivirira kubva kune yakaderera-level memory manipulation, sekuwana nzvimbo yekurangarira mushure mekunge yasunungurwa, null pointer dereferences, buffer overruns, nezvimwe. Maneja wepakeji ari kugadzirwa kugovera maraibhurari, kuona kuungana uye kugadzirisa zvinovimbika neprojekiti.
chikuru
- Yakabviswa kwenguva refu
kukanganisa paunenge uchiita shanduko pakati pemanhamba nemapoinzi anoyangarara. Sezvo Rust compiler inoshandisa LLVM senge backend, mhando yekushandura mashandiro akaitwa kuburikidza neLLVM yepakati kodhi mirairo senge.fptoui , iyo ine chinhu chimwe chakakosha - maitiro asina kutsanangurwa kana kukosha kwacho kusingaenderane nerudzi rwechinangwa. Semuenzaniso, kana uchishandura kukosha kwekuyangarara 300 nemhando f32 kune nhamba yerudzi u8, mhedzisiro yacho haifungidzike uye inogona kusiyana pane akasiyana masisitimu. Dambudziko nderekuti chimiro ichi chinoonekwa mukodhi isina kunyorwa se "isina kuchengetedzeka".Kubva paRust 1.45, hunhu hwemhando yekufashukira hunodzorwa zvakanyanya, uye iyo "se" shanduko yekushanda inoongorora mafashama uye inomanikidza kukosha kuchinjirwa kune yakakwira kana kushomeka kukosha kwerudzi rwechinangwa (semuenzaniso uri pamusoro, kukosha kwe. 300 yaizoshandurwa kuita 255). Kudzima macheki akadaro, mamwe maAPI anofona "{f64, f32}::to_int_unchecked" anopihwa, achishanda mune isina kuchengetedzeka mode.
fn cast(x: f32) -> u8 {
x uye u8
}fn chikuru() {
let too_big = 300.0;
let too_small = -100.0;
regai nan = f32::NAN;rega x: f32 = 1.0;
rega y: u8 = isina kuchengeteka {x.to_int_unchecked()};println!("too_big_casted = {}", cast(too_big)); // kuburitsa 255
println!("too_small_casted = {}", cast(too_small)); // zvabuda 0
println!("not_a_number_casted = {}", cast(nan)); // kuburitsa 0
} - Shandisa yakagadzikana
process macros basa-sekutaura, matemplate, uye zvirevo. Pakutanga, macros akadaro aisakwanisa kudanwa kwese kwese, asi mune zvimwe zvikamu zvekodhi (sekudanwa kwakasiyana, isina kupindirana neimwe kodhi). Kuwedzera nzira iyo macros inogona kudanwa, yakafanana nemabasa, yaive imwe yezvaidiwa kuti webhu hurongwa hushande.chitundumuseremusere mukuburitswa kwakagadzikana kweRust. Pakutanga, kuwana imwe shanduko mukutsanangura vanobata muRocket kunodiwa kugonesa chinhu chekuyedza chinonzi "proc_macro_hygiene", icho chisipo mushanduro dzakagadzikana dzeRust. Kuita uku kwave kuvakwa mukuburitswa kwakagadzikana kwemutauro. - Inotenderwa kushandisa masanji ane mhando "char" kudzokorodza pamusoro pemhando dzemhando (ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):
ye ch in 'a'..='z' {
print!("{}", ch);
}
println!(); // Achadhinda "abcdefghijklmnopqrstuvwxyz" - Chikamu chitsva che APIs chakaendeswa kune yakagadzikana chikamu, kusanganisira yakagadzikana
Arc::as_ptr,
BtreeMap ::bvisa_kupinda,
Rc::as_ptr,
rc::Haina simba::as_ptr,
rc::Haina simba::kubva_raw,
rc::Haina simba::mu_raw,
str::strip_prefix,
str::strip_suffix,
sync::Isina kusimba::as_ptr,
sync::Haina simba::kubva_raw,
sync::Isina kusimba::mu_raw,
char::UNICODE_VERSION,
Nguva::yakagadziriswa_pa,
Span::inowanikwa_pa,
Span::mixed_site,
unix::maitiro::CommandExt::arg0. - Iyo rustc compiler yakawedzera tsigiro yekupfuura akasiyana-siyana anonangwa papuratifomu maficha achishandisa "chinangwa-chinhu" mureza, semuenzaniso, "-C target-feature=+avx2+fma". Mireza mitsva yakawedzerwawo:
"kumanikidza-kusunungura-matafura" kugadzira kusunungura kufona matafura, zvisinei negwara rekubata njodzi; "embed-bitcode" kutonga kana LLVM bitcode inosanganisirwa mumarlibs anogadzirwa. Iyo "embed-bitcode" mureza inogoneswa nekusarudzika muCargo kukwirisa nguva yekuvaka uye disk nzvimbo yekushandisa. - Chikamu chechitatu chekutsigirwa chakapihwa mipsel-sony-psp uye thumbv7a-uwp-windows-msvc mapuratifomu. Iyo yechitatu nhanho inosanganisira yekutanga tsigiro, asi pasina otomatiki kuyedzwa uye kuburitswa kwepamutemo kuvaka.
Uyezve, inogona kucherechedzwa
Chinyorwa chacho ndechekutanga munhevedzano yakatsaurirwa kuratidza matekiniki ari kudiwa mune yakaderera-chikamu chirongwa uye OS kusimudzira.
Source: opennet.ru