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
- Inoshandiswa tsigiro yemhando
arrays chero saizi. Kare, nekuda kwekusakwanisa kutsanangura mabasa egeneric kune ese akaenzana kukosha, raibhurari yakajairwa yakapa yakavakirwa-mukati tsigiro yehunhu chete kune arrays anosvika makumi matatu nemaviri muhukuru (hunhu hwesaizi yega yega hwaitsanangurwa statically). Nekuda kwekugadzirwa kwekushanda kweanogara achigadzirwa ("const generics"), zvakave nyore kutsanangura mabasa egeneric kune chero saizi yemhando, asi haasati abatanidzwa mune yakagadzikana maficha emitauro, kunyangwe iwo anoitwa mumubatanidzwa uye ari. ikozvinozvinobatanidzwa muraibhurari yakajairika yemhando dzemhando ipi neipi.Semuenzaniso, iyo inotevera kuvaka muRust 1.47 ichadhinda zviri mukati mehurongwa, kunyangwe kare zvaizokonzera kukanganisa:
fn chikuru() {
rega xs = [0; 34];println!("{:?}", xs);
} - Inopihwa kuburitsa kweapfupi trace (backtrace), inobuda mumamiriro e emergency. Zvinhu zvisingafadzi mumamiriro mazhinji, asi zvinokanganisa zvinobuda uye zvinokanganisa kutarisa kubva kune izvo zvinokonzeresa dambudziko, hazvibatanidzwe kubva mukutsvaga. Kuti udzosere tsvakiridzo yakazara, unogona kushandisa shanduko yenharaunda "RUST_BACKTRACE=yakazara". Somuenzaniso, nokuda kwekodhi
fn chikuru() {
kutya!();
}Kare, tsvakiridzo yaibuda mumatanho makumi maviri nematatu, asi ikozvino ichaderedzwa kusvika
3 nhanho dzinokutendera iwe kuti ubate nekukurumidza essence:thread 'main' yakavhunduka pa 'explicit panic', src/main.rs:2:5
stack backtrace:
0: std::panicking::tanga_kuvhunduka
pa/rustc/dβ¦d75a/library/std/src/panicking.rs:497
1: nhandare::main
pa ./src/main.rs:2
2: musimboti::ops::basa::FnOnce::call_kamwechete
pa/rustc/dβ¦d75a/library/core/src/ops/function.rs:227 - Iyo rustc compiler yakagadziridzwa kuvaka uchishandisa
LLVM 11 (Rustanoshandisa LLVM semushure mekugadzirwa kwekodhi ) Panguva imwecheteyo, kugona kuvaka nevakuru veLLVM, kusvika kuvhezheni 8, inochengetwa, asi nekukasira (mu.rust-lang/llvm-purojekiti ) ikozvino iri kushandisa LLVM 11. LLVM 11 inotarisirwa kubudiswa mumazuva anouya. - PaWindows papuratifomu, iyo rustc compiler inopa rutsigiro rwekugonesa kudzora kuyerera kutendeseka cheki (Kudzora Flow Guard), yakabatidzwa uchishandisa "-C control-flow-guard" mureza. Pane mamwe mapuratifomu mureza uyu hautariswe parizvino.
- Chikamu chitsva che APIs chakaendeswa kune yakagadzikana chikamu, kusanganisira yakagadzikana
Ident ::nyowani_raw,
Range::haina_isina,
RangeInclusive::haina_isina,
Mhedzisiro::as_deref,
Mhedzisiro::as_deref_mut,
Vec::kudonha,
pointer::offset_from,
f32::TAU uye
f64::TAU. - Iyo "const" hunhu, iyo inosarudza mukana wekuishandisa mune chero mamiriro pachinzvimbo chekugara, inoshandiswa munzira idzi:
- itsva kune ese manhamba asiri zero;
- checked_add, checked_sub, checked_mul, checked_neg, checked_shr, saturating_add, saturating_sub uye saturating_mul yezvose zvakakwana;
- 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 uye is_ascii_ucontrol.
- YeFreeBSD
zvinobatanidzwa toolkit kubva kuFreeBSD 11.4 (FreeBSD 10 haitsigire LLVM 11).
Source: opennet.ru