Ulawulo lwenkumbulo oluzenzekelayo lwe-Rust lukhulula umphuhlisi ekusetyenzisweni kwesalathisi kwaye ikhusela kwiingxaki ezivela kulawulo lwenkumbulo olukwinqanaba elisezantsi, elifana nofikelelo lwememori yasemva kwe-free, izalathisi ezingenanto, ukugqithiswa kwe-buffer, nokunye okunjalo. Umphathi wephakheji uyaphuhliswa ukuze asasaze amathala eencwadi, aqinisekise ukudibanisa kunye nokulawula ukuxhomekeka kwiprojekthi.
Siseko
- Kongezwe indlela yokudibanisa engumbhobho (efakwe umbhobho), apho ukwakhiwa kwephakheji yekhreyithi exhomekeke kuyo iqala nje ukuba imetadata yokuxhomekeka ifumaneke, ngaphandle kokulinda ukuqokelelwa kwayo kugqitywe. Xa uqulunqa ipakethe, awudingi ukuba nazo zonke izixhomekeke zidityanisiwe, ufuna nje ukuchaza i-metadata, equka uluhlu lweentlobo, ukuxhomekeka, kunye nezinto ezithunyelwa ngaphandle. Imetadata yenziwa ifumaneke kwangoko kwinkqubo yoqulunqo, ngoko ke iipakethe ezidityanisiweyo zinokuqokelelwa kwangethuba. Xa ukwakhiwa kweepakethe enye, imodi ecetywayo ayichaphazeli ukusebenza, kodwa ukuba ukwakhiwa kugubungela iipakethe ezinokuxhomekeka kwe-branched, ixesha lokwakha elipheleleyo lingancitshiswa nge-10-20%;
- Iqinisekisa ukubhaqwa kokusetyenziswa ngokungalunganga kwemisebenzi
std::mem::ayenziwanga иstd::mem::zeroed . Umzekelo, std::mem::uninitialized ilungele ukudala ngokukhawuleza uluhlu, kodwa ilahlekisa umqokeleli kuba ibonakala iqalwa, kodwa eneneni ixabiso lihlala lingaqaliswanga. I mem ::umsebenzi ongamiselwanga sele uphawulwe njengolahlisiweyo kwaye kuyacetyiswa ukuba kusetyenziswe udidi oluphakathi endaweni yoko.Mhlawumbi iYunithi . Ngokuphathelele i-mem::i-zeroed, lo msebenzi unokubangela iingxaki ngeentlobo ezingakwaziyo ukwamkela amaxabiso angu-zero.Ukunceda ukuchonga indlela yokuziphatha engachazwanga, ukhupho olutsha longeza i-lint check kumqokeleli obona iingxaki ezithile nge-mem ::engaqalwanga okanye i-mem::i-zeroed. Umzekelo, ngoku ufumana imposiso xa uzama ukusebenzisa i-mem::engamiselwanga okanye i-mem::i-zeroed ngeentlobo &T neBhokisi‹T›, emele izinto zesalathisi ezingenakwamkela amaxabiso angasebenziyo;
- Uphawu loyelelwano “#[luyekiwe]” lwandisiwe ukuvumela iipakethe zekhreyithi ukuba ziphawulwe njengephelelwe lixesha kwaye zicwangciselwe ukucinywa kwixesha elizayo. Ukusukela kwiRust 1.38, olu phawu lungasetyenziselwa iimacros;
- Kongezwe ukukwazi ukusebenzisa uphawu lwe-“#[global_allocator]” kwiimodyuli ezincinci;
- Umsebenzi ongezelelweyo
std::nayiphi::type_igama , ekuvumela ukuba ufumane igama lodidi, elinokuba luncedo kwiinjongo zokucoca. Umzekelo, ngexesha lokwenziwa kwenkqubo ungafumanisa ukuba loluphi uhlobo lomsebenzi owawubizwa ngalo:fn gen_value‹T: Default>() -› T {
println!("Ukuqala umzekelo we- {}", std::nayiphi::type_name::‹T›());
Okuhlala kukho::okuhlala kukho ()
}fn eyona () {
vumela _: i32 = gen_value(); # "i32" iya kuprintwa
vumela _: Umtya = gen_value (); # iya kuprinta "alloc::string::String"
} - Imisebenzi eyandisiweyo yethala leencwadi elisemgangathweni:
- slice::{concat, connect, join} ngoku ingathatha ixabiso &[T] ukongeza kwi &T;
- "*const T" kunye "*mut T" ngoku sebenzisa isiphawuli::Susa ukuphina;
- "Arc‹[T]›" kunye "Rc‹[T]›" ngoku phumeza FromIterator‹T›;
- iter::{StepBy, Peekable, Take} ngoku sebenzisa i-DoubleEndedIterator.
- ascii ::EscapeDefault sebenzisa Clone kunye nomboniso.
- Inxalenye entsha ye-APIs idluliselwe kwinqanaba elizinzile, kubandakanywa neendlela ezizinzile
- ‹*const T›::cast, ‹*mut T›::cast,
- Ubude bexesha::as_secs_f{32|64},
- Ubude bexesha::div_duration_f{32|64},
- Ubude bexesha::div_f{32|64},
- Ubude bexesha::ukusuka_imizuzwana_f{32|64},
- Ubude bexesha::mul_f{32|64},
- imisebenzi yokwahlula kunye nentsalela
div_euclid kunye ne-rem_euclid yazo zonke iiprimitives ezipheleleyo;
- Inkxaso eyongeziweyo yokucacisa "--iimpawu" ukhetho amaxesha amaninzi ukwenza iimpawu ezahlukeneyo kumphathi wepakethe yempahla;
- Umqambi ubonelela ngeyesithathu
bakala inkxaso yamaqonga ekujoliswe kuwo aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc targets, armvlinux-unknown-unknown -gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl kunye riscv7i-unknown-none-elf. Inqanaba lesithathu libandakanya inkxaso eyisiseko, kodwa ngaphandle kovavanyo oluzenzekelayo kunye nokupapashwa kokwakhiwa kwasemthethweni.
umthombo: opennet.ru