Rust 1.42 Ukukhishwa Kolimi Lokuhlela

eshicilelwe ukukhululwa kolimi lokuhlela uhlelo Ukugqwala 1.42, eyasungulwa iphrojekthi ye-Mozilla. Ulimi lugxile ekuphepheni kwenkumbulo, luhlinzeka ngokuphathwa kwenkumbulo okuzenzakalelayo, futhi luhlinzeka ngamathuluzi okuthola ukufana kwemisebenzi ephezulu ngaphandle kokusebenzisa umqoqi kadoti kanye isikhathi sokuqalisa.

Ukuphathwa kwenkumbulo okuzenzakalelayo kwe-Rust kukhulula umthuthukisi ekukhohlisweni kwezikhombisi futhi kuvikele ezinkingeni ezivela ekukhohlisweni kwenkumbulo yezinga eliphansi, njengokufinyelela kwememori yangemuva kwamahhala, izinkomba ezingenalutho, ukugcwala kwebhafa, nokunye okunjalo. Umphathi wephakheji uyathuthukiswa ukuze asabalalise imitapo yolwazi, aqinisekise ukuhlanganisa nokuphatha ukuncika ngephrojekthi. cargo, okukuvumela ukuthi uthole amalabhulali adingekayo ohlelweni ngokuchofoza okukodwa. Indawo yokugcina isekelwa ukuze isingathe amalabhulali amakhreyithi.io.

main emisha:

  • Kwengeziwe ukusekelwa kwezifanekiso zokuqhathanisa izingxenye zezingcezu (amalungu afanayo ashukumisayo, ucezu). Ngaphambilini, ukufana okuqondile kwakuvunyelwe, kodwa manje kungenzeka ukusebenzisa izakhiwo eziphawulwe ngokuthi ".." ukumboza izici ezisele zamalungu afanayo. Ngokwesibonelo:

    fn foo(amagama: &[&str]) {
    fanisa amagama {

    // ihlola izakhi zokuqala zamalungu afanayo futhi iziba
    izici ezibalandelayo
    ["Sawubona", "World", "!", ..] => println!("Sawubona Mhlaba!"),

    // ihlola izakhi ezimbili zokuqala "Foo" kanye "Ibha", futhi okunye akubalulekile
    ["Foo", "Ibha", ..] => println!("Baz"),

    // indiva yonke into, kodwa into yokugcina kufanele ibe "!".
    [.., “!”] => phrinta!(“!!!”),

    // esiqeshini sokuqala sifaka yonke into ngaphandle kwento yokugcina, okufanele ibe ngu-“z”
    [qala @ .., "z"] => println!("iqala ngokuthi: {:?}", qala),

    // ekugcineni sibeka yonke into ngaphandle kwesici sokuqala, okufanele sibe "a".
    ["a", gcina @ ..] => println!("iphetha ngokuthi: {:?}", ekugcineni),

    rest => println!("{:?}", phumula),
    }
    }

  • Kwengezwe “okufanayo” okusha okuyimakhro, ethatha isisho nephethini njengokufaka, bese ibuyisela “iqiniso” uma iphethini ifana nenkulumo. Isifanekiso singasebenzisa imisebenzi ethi “|” futhi "uma".

    match self.partial_cmp(okunye) {
    Abanye(Okuncane) => iqiniso,
    _ => amanga,
    }

    okufanayo!(self.partial_cmp(okunye), Okunye(Kancane))

    let foo = 'f';
    gomela!(okufanayo!(foo, 'A'..='Z' | 'a'..='z'));

    vumela ibha = Abanye(4);
    gomela!(okufanayo!(ibha, Okunye(x) uma x > 2));

  • Emilayezweni ethusayo ekhonjiswa uma isetshenziswe ngokungalungile
    thayipha Inketho Nomphumela, manje bonisa izinombolo zolayini ezinesixhumanisi sekhodi eshaye ucingo oluyinkinga, kunezixhumanisi zekhodi esebenzisa ikholi ku-libcore. Isibonelo, ushintsho luthinta amakholi okumele aqaqeke futhi alindelwe ngaphezu Kwenketho::Akukho, noma ukuphahlazeka uma usebenzisa unwrap_err, lindela, expect_err, nezindlela ezifanayo ohlotsheni Lomphumela.

  • Umphathi wephakheji le-Cargo uhlinzeka ngokushintshanisa okuzenzakalelayo kwe-"proc_macro crate" endaweni "yangaphandle" yamaphakheji anama-procedural macros. Lolu shintsho luvumela umyalelo "wokusetshenziswa" ukuthi usetshenziswe kumamakhro enqubo ngaphandle kokuthi kucaciswe "extern crate proc_macro;" kukhodi. Isibonelo, uma uhlelo lisebenzisa umugqa othi “sebenzisa i-proc_macro::TokenStream;”, ikhodi manje izohlala isebenza uma i-“extern crate proc_macro;” isuswa kuyo.
  • Amakhono omtapo wolwazi ojwayelekile anwetshiwe. Ngaphakathi::Akunalutho kwengezwe Thumela futhi Vumelanisa ukwesekwa kwanoma yimaphi amanani e-T.
    I-Call Pin::{imephu_ayihloliwe, imephu_engahloliwe_mut} ilethiwe kusukela ekubuyiseleni uhlobo lwevelu ukuze kusetshenziswe "usayizi".
    Ku-io::Ikhesa kwenziwe Ingxenye ye-Eq ne-Eq. Isibaluli esithi “const” sinquma ukuthi kungenzeka yini ukusetshenziswa kunoma yimuphi umongo esikhundleni sokuhlanganisa, kusetshenzisiwe okweSilungiselelo::indlela entsha.

  • Ingxenye entsha ye-API idluliselwe esigabeni esizinzile, okuhlanganisa ne-CondVar ezinzile::wait_while, CondVar::wait_timeout_while,
    DebugMap::key, DebugMap::value,
    ManuallyDrop::thatha,
    ptr::slice_from_raw_parts_mut and ptr::slice_from_raw_parts.

  • Iphutha::indlela yencazelo yehlisiwe.
  • Kuhlinzekelwe ukwesekwa kwezinga lesibili kwezingxenyekazi ze-armv7a-none-eabi kanye ne-riscv64gc-engaziwa-linux-gnu. Usekelo lwelabhulali ejwayelekile yeplathifomu ye-riscv64gc-unknown-linux-gnu inikeziwe.
    Apple 32-bit platforms wehlisiwe kuze kufike ezingeni lesithathu lokusekelwa, okusho ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlolwa okuzenzakalelayo nokushicilelwa kwezakhiwo ezisemthethweni. Ukwehliswa kokusekelwa kungenxa yokuthi i-Apple ayisasekeli amapulatifomu angama-32-bit.

Source: opennet.ru

Engeza amazwana