Rust's otomatiki ndangariro manejimendi inosunungura mugadziri kubva pakugadzirisa pointer uye inodzivirira kubva kune yakaderera-level ndangariro manipulation, senge mushure-yemahara memory yekuwana, null pointer dereferences, buffer overruns, nezvimwe. Maneja wepakeji ari kugadzirwa kugovera maraibhurari, kuona kuungana uye kugadzirisa zvinovimbika neprojekiti.
chikuru
- Hunhu hwakadzikama
Future , iyo inomiririra kukosha iyo ongororo inogona kunge isati yapera uchishandisa async / .await blocks. Asynchronous values ββinotsanangurwa uchishandisa Ramangwana inoita kuti zvikwanise kuenderera mberi nekuita basa rinobatsira mushinda, panguva imwe chete yakamirira kupedzwa kwekuverenga kwehumwe kukosha; - Raibhurari yakagadzikana
alloc , iyo inopa smart pointer uye kuunganidzwa kwekugadzirisa ndangariro-yakagoverwa kukosha. Memory allocation mu std ikozvino inoshandisa mhandoChinhu , iyo inotengeswa zvakare kubva kune alloc. Kushandiswa kwakaparadzana kwealloc kune musoro muzvishandiso zvisina kusungirirwa kune std ("#![no_std]"), pamwe nemumaraibhurari akagadzirirwa kushandiswa muzvirongwa zvakafanana pasina std; - Kunzvenga macheki ekutanga kwezvinokosha
suggested mhando yepakatiPamweUniti , iyo inogona kushandiswa pachinzvimbo che mem ::uninitialized basa seimwe nzira yakachengeteka. The mem :: uninitialized function yakanakira kukurumidza kugadzira arrays, asi inotsausa muunganidzi nekuti inoita seyakatanga, asi muchokwadi kukosha kunoramba kusingazivikanwe. Pamwe Uninit inokutendera kuti uratidze pachena kune mugadziri kuti kukosha hakuna kurongeka, kufunga nezve hunhu husina kutsanangurwa hunoenderana neizvi, uye zvakare kuronga cheki muzvirongwa kuburikidza ne "zvichida_t:" uye nhanho-ne-nhanho kutanga, zvichiratidza kupera kwayo. uchishandisa β.assume_init()β kufona. Nekuuya kweMaybeUninit, mem ::uninitialized basa rakadzikiswa uye harikurudzirwe kushandiswa; - Iyo NLL (Non-Lexical Lifetimes) nzira, iyo yakawedzera sisitimu yekurekodha hupenyu hwezvakakweretwa zvakasiyana, yakagadziriswa kuRust 2015 mutauro (pakutanga, NLL yaitsigirwa chete neRust 2018). Panzvimbo pekuita hupenyu hwese padanho relexical, NLL inozviita pamwero weiyo seti yeanongedzo mune yekuuraya inoyerera girafu. Iyi nzira inokubvumira kuti uwedzere hutano hwekutarisa kukwereta kwezvimwe zvakasiyana-siyana (kukwereta cheki) uye kubvumira kuitwa kwemamwe marudzi ekodhi yakarurama, kushandiswa kwaimbove kwakakonzera kukanganisa. Hunhu hutsva hunoitawo kuti kugadzirisa kuve nyore;
- Kuitwa kutsva kweassociative arrays inosanganisirwa
HashMap , zvichienderana nekushandiswa kwechimiroSwiss Tafura (zvakaremerwa otomatikihashbrown::HashMap , kunze kwekunge zvataurwa neimwe nzira, senge std::HashMap, iyo inobva paSipHash 1-3). Iyo software interface inoramba yakafanana, uye misiyano inoonekwa kumugadziri inowira pasi kusvika pakuwedzera kwekuita uye kuderedzwa kwendangariro kushandiswa; - Mupakeji maneja cargo
akawedzera iyo "--offline" sarudzo, iyo inogonesa kushanda pasina kuwana network, umo chete mapakeji akavharirwa mune yemuno sisitimu anoshandiswa pakuisa zvinoenderana. Kana kutsamira kusiri mucache yenzvimbo, kukanganisa kunokandwa. Kufanorodha zvinotsamira mukati mecache yemuno usati waenda kunze kwenyika, unogona kushandisa murairo we "cargo fetch"; - Yakaita kugona kudaidza iyo macro "dbg!" kuratidza nharo dzakawanda;
- Iyo "const" hunhu, iyo inosarudza mukana wekushandisa mune chero mamiriro pachinzvimbo chezvisingaperi, inoshandiswa kune nzira.
Layout::kubva_size_align_unchecked,
mem::inoda_kudonha,
NonNnull ::kurembera uye
NonNnull::cast; - Chikamu chitsva che APIs chakaendeswa kune yakagadzikana chikamu, kusanganisira nzira dzakagadziriswa
basa::Waker, basa::Poll,
VecDeque::tenderera_kuruboshwe, VecDeque::tenderera_kurudyi,
Verenga::verenga_vectored, Nyora::write_vectored,
Iterator ::kopiwa,
BorrowMut (yetambo) uye str::as_mut_ptr.
Source: opennet.ru