An buga yaren shirye-shirye na Rust 1.82 na gabaɗaya, wanda aikin Mozilla ya kafa, amma yanzu an haɓaka shi a ƙarƙashin inuwar wata kungiya mai zaman kanta mai zaman kanta ta Rust Foundation. Harshen yana mai da hankali kan amincin ƙwaƙwalwar ajiya kuma yana ba da hanyoyin cimma babban daidaiton aiki yayin guje wa yin amfani da mai tara shara da lokacin aiki (an rage lokacin aiki zuwa farawa na asali da kiyaye daidaitaccen ɗakin karatu).
Hanyoyin sarrafa ƙwaƙwalwar Rust suna ceton mai haɓakawa daga kurakurai yayin sarrafa masu nuni da kuma kariya daga matsalolin da suka taso saboda ƙarancin kulawar ƙwaƙwalwar ajiya, kamar samun damar wurin ƙwaƙwalwar ajiya bayan an 'yantar da shi, cire maƙasudin null, buffer overruns, da dai sauransu. Don rarraba ɗakunan karatu, samar da gini da sarrafa abubuwan dogaro, aikin yana haɓaka manajan fakitin Kaya. Ana tallafawa ma'ajiyar crates.io don ɗaukar ɗakunan karatu.
Ana ba da amincin ƙwaƙwalwar ajiya a cikin Tsatsa a lokacin tattarawa ta hanyar duba tunani, kiyaye bin diddigin mallakar abu, kiyaye tsawon rayuwa (masu iyawa), da tantance daidaiton damar ƙwaƙwalwar ajiya yayin aiwatar da lambar. Tsatsa kuma yana ba da kariya daga ambaliya mai lamba, yana buƙatar ƙaddamar da ƙima mai mahimmanci kafin amfani, yana sarrafa kurakurai mafi kyau a cikin daidaitaccen ɗakin karatu, yana amfani da ra'ayi na nassoshi marasa canzawa da masu canji ta tsohuwa, yana ba da buga rubutu mai ƙarfi don rage kurakurai masu ma'ana.
Manyan sabbin abubuwa:
- An ƙara umarnin "bayanai" zuwa mai sarrafa fakitin kaya don nuna bayani game da fakiti a cikin ma'ajiyar.
- Ƙara goyon baya don "amfani<..>" a cikin "impl Trait", wanda ke ƙayyadaddun bayanai game da ɓoyayyun nau'ikan. Misali, "impl Trait + use<'x, T>" yana ƙayyade cewa sigogin "x" da "T" kawai aka yarda a yi amfani da su a cikin nau'in ɓoye.
- An ba da shawarar wani nau'i na daban don ƙirƙirar masu nuni, maye gurbin macros da aka yi amfani da su a baya: "addr_of!(expr)" macro an maye gurbinsa da ma'aikacin "&raw const expr", kuma "addr_of_mut!(expr)" an maye gurbinsa. ta "&raw mut" afaretan expr". Tsarin Kunshe {not_aligned_field: i32,} fn main() {bari p = Kunshe {not_aligned_field: 1_82}; // Tsohuwar hanyar da za a ƙirƙiri mai ma'ana mai sauƙi bari ptr = std :: ptr :: addr_of!(p.not_aligned_field); // Sabuwar hanyar da za a ƙirƙiri danyar mai nuni bari ptr = & raw const p.not_aligned_field; bari val = mara lafiya {ptr.read_unaligned()}; }
- Yana yiwuwa a ayyana ayyuka masu aminci da ma'auni tare da 'tsayayyen' rayuwa a cikin tubalan waje tare da sifa "mara lafiya" (a da, duk abubuwan da ke cikin "mara tsaro na waje" na iya samun sifa "mara lafiya" kawai): rashin lafiya na waje { mashaya lafiya a tsaye TAU: f64; mashaya lafiya fn sqrt(x: f64) -> f64; mashaya mara lafiya fn strlen (p: * const u8) -> amfani; }
- No_mangle, sashe_link_da sifofin suna fitarwa, waɗanda zasu iya haifar da halayen da ba a bayyana ba, yanzu ana ɗaukar su mara lafiya kuma suna buƙatar tuta "mara lafiya", misali: #[unsafe(no_mangle)] pub fn my_global_function() {}
- Daidaiton tsari yana ba da damar tsallake nau'ikan fanko, kamar "enum Void {}" ko tsarin da babu fili a bayyane. yi amfani da std :: maida :: Ma'asumi; mashaya fn unwrap_ba tare da tsoro ba (x: Sakamako ) -> T {bari Ok(x) = x; // "Kuskure" ana iya tsallake x}
- Nau'ikan don lambobi masu iyo (f32 da f64) suna da daidaitattun halaye yayin sarrafa ƙimar NaN mara ƙima (0.0/0.0), kuma suna ba da izinin amfani da ayyukan iyo a cikin const fn.
- Abubuwan da ake sakawa na majalisa suna ba da damar yin amfani da operands tare da sifa ta “const” don amfani da ƙimar lamba kai tsaye ba tare da fara adana su a cikin rajista ba. const MSG: &str = "Sannu, duniya!\n"; unsafe {core :: arch :: asm! }
- Ana ba da izinin yin magana tare da sifa ta "tsaye" a cikin mahallin aminci ba tare da bayyana wani shinge mara tsaro ba (masu aiki da "&raw mut" da "&raw const" masu aiki ba sa shafar ƙimar operand kuma kawai suna ƙirƙirar mai nuni zuwa gare shi): a tsaye mut. STATIC_MUT: Nau'in = Nau'in :: sabo( ); waje "C" {tsayayyen EXTERN_STATIC: Nau'in; } fn main() {bari static_mut_ptr = &raw mut STATIC_MUT; bari extern_static_ptr = & raw const EXTERN_STATIC; }
- An koma wani sabon yanki na API zuwa nau'in barga, gami da hanyoyin da aiwatar da halaye an daidaita su:
- std :: zaren :: Gina :: spawn_unchecked
- std :: str :: CharIndices :: kashe kuɗi
- std :: zabi :: Zabin :: babu_ko
- [T] :: an_jera
- [T] ::_shi_ne
- [T] :: an_jera_da_key
- Mai maimaitawa ::an_jera
- Mai maimaitawa ::an_jera_da
- Mai maimaitawa ::an_jera_da_key
- std :: gaba :: Shirye :: shiga_ciki
- std::iter:: maimaita_n
- impl DoubleEndedIterator don ɗauka
source: budenet.ru
