Kuwongolera kukumbukira kwa Rust kumamasula wopanga kuti asasokonezedwe ndi pointer ndikutchinjiriza ku zovuta zomwe zimadza chifukwa chakuwongolera kukumbukira kwapang'onopang'ono, monga kulowa kwa kukumbukira kwaulere, kusokoneza null pointer, buffer overruns, ndi zina zotero. Woyang'anira phukusi akupangidwa kuti azigawira malaibulale, kuwonetsetsa kusonkhanitsa ndi kuyang'anira zodalira ndi polojekiti.
waukulu
- Khalidwe lokhazikika
tsogolo , yomwe ikuyimira mtengo womwe kuwunika kwake sikungamalizidwebe pogwiritsa ntchito async / .await midadada. Miyezo ya Asynchronous yomwe imatanthauzidwa pogwiritsa ntchito Future imapangitsa kuti zitheke kupitiliza kugwira ntchito zothandiza mu ulusi, kwinaku mukudikirira kumaliza kuwerengera kwa mtengo wina; - Library yokhazikika
alloc , yomwe imapereka zolozera zanzeru ndi zosonkhanitsira zowongolera zinthu zomwe zimaperekedwa kukumbukira. Memory allocation mu std tsopano imagwiritsa ntchito mtunduwoChinthu , zomwe zimatumizidwanso kuchokera ku alloc. Kugwiritsiridwa ntchito kosiyana kwa alloc kumamveka bwino pamapulogalamu osamangidwa ku std ("#![no_std]"), komanso m'malaibulale opangidwa kuti azigwiritsidwa ntchito m'mapulogalamu ofanana opanda std; - Kulambalala macheke kuti muyambitse zolondola
analimbikitsa mtundu wapakatikatiMwina Unit , yomwe ingagwiritsidwe ntchito m'malo mwa mem::ntchito yosadziwika ngati njira yotetezeka. The mem :: ntchito yosadziwika bwino ndi yabwino kuti ipangike mwamsanga, koma imasocheretsa wojambulayo chifukwa akuwoneka kuti wayambitsa, koma kwenikweni mtengowo umakhalabe wosadziwika. MwinaUninit imakupatsani mwayi wowonetsa momveka bwino kwa wolembayo kuti mtengo wake sunayambike, kuti muganizire zomwe zingachitike ndi zomwe sizikudziwika bwino, komanso kukonza macheke mumapulogalamu kudzera "mwina_t:" ndikuyambitsa pang'onopang'ono, kutsimikizira kukwaniritsidwa kwake. pogwiritsa ntchito foni ya β.assume_init()β. Ndikubwera kwa MaybeUninit, mem ::ntchito yosadziwika yachotsedwa ndipo siyikulimbikitsidwa kuti igwiritsidwe ntchito; - Njira ya NLL (Non-Lexical Lifetimes), yomwe idakulitsa makina ojambulira moyo wamitundu yobwereka, idakhazikika pachilankhulo cha Rust 2015 (poyamba, NLL idathandizidwa ndi Rust 2018). M'malo mochita moyo wonse pamlingo wa lexical, NLL imachita izi pamlingo wa zolozera mu graph yotulutsa. Njirayi imakulolani kuti muwonjezere khalidwe la kuyang'ana kubwereka kwa zosinthika (kubwereka chosungira) ndikulola kuchitidwa kwa mitundu ina ya code yolondola, kugwiritsa ntchito komwe kunayambitsa zolakwika. Khalidwe latsopanoli limapangitsanso kuthetsa mosavuta;
- Kukhazikitsa kwatsopano kwa ma associative arrays akuphatikizidwa
HashMap , potengera momwe kamangidwe kameneka kanagwiritsidwira ntchitoSwiss Table (zodzaza zokhahashbrown::HashMap , pokhapokha atanenedwa momveka bwino, monga std::HashMap, yozikidwa pa SipHash 1-3). Mawonekedwe a mapulogalamu amakhalabe ofanana, ndipo kusiyana komwe kumawonekera kwa wopanga mapulogalamu kuwira mpaka kuwonjezeka kwa ntchito ndikuchepetsa kukumbukira kukumbukira; - Mu phukusi woyang'anira katundu
anawonjezera njira ya "--offline", yomwe imathandizira kugwira ntchito popanda kugwiritsa ntchito netiweki, momwe phukusi lokhalo losungidwa pamakina am'deralo limagwiritsidwa ntchito pakuyika zodalira. Ngati kudalira sikuli mu cache yakomweko, cholakwika chidzaponyedwa. Kuti mulowetsenso zodalira mu cache yapafupi musanalowe pa intaneti, mutha kugwiritsa ntchito lamulo la "cargo fetch"; - Yakhazikitsa luso lotcha macro "dbg!" kusonyeza mfundo zingapo;
- Lingaliro la "const", lomwe limatsimikizira kuthekera kogwiritsa ntchito mwanjira iliyonse m'malo mokhazikika, limagwiritsidwa ntchito panjira.
Kamangidwe::kuchokera_kukula_align_osasankhidwa,
mem::zofunikira_kusiya,
NonNnull ::kulendewera ndi
NonNull ::cast; - Gawo latsopano la API lasamutsidwa ku gulu lokhazikika, kuphatikizapo njira zomwe zakhazikika
ntchito::Waker, ntchito::Poll,
VecDeque::tembenuza_kumanzere, VecDeque::tembenuza_kumanja,
Werengani::read_vectored, Lembani::write_vectored,
Iterator::kopera,
BorrowMut (kwa zingwe) ndi str::as_mut_ptr.
Source: opennet.ru