süsteemse programmeerimise keele väljaanne , mille Mozilla. Keel keskendub mälu ohutusele, tagab automaatse mälu juhtimise ja pakub tööde kõrge paralleelsuse saavutamise vahendeid, ilma et oleks vaja prügikorjajat ja .
Rustis tagab automaatne mälu haldamine arendajale mälukäitlemise manipuleerimise vabastamise ja kaitseb madala taseme mälu töötlemisega seotud probleemide eest, nagu mälu kasutamine pärast selle vabastamist, nullviidete de-referentsimine, puhverduspiiride ületamine jne. Raamatukogude jagamiseks, koostamise tagamiseks ja sõltuvuste haldamiseks arendatakse pakihaldurit , mis võimaldab vajalikke raamatukogusid ühe klikiga hankida. Raamatukogude paigutamiseks toetatakse hoidlapaiku .
Peamised :
- mustrid dünaamiliste massiivide (slice) osade seostamiseks. Kui varasemalt lubati täpsed seosed, siis nüüd on lisatud võimalus kasutada konstruktsioone, millel on silt „..“, et haarata ülejäänud massiivi elemendid. Näiteks:
fn foo(words: &[&str]) {
match words {// проверяет начальные элементы массива с игнорированием
neile järgnevate elementide
[„Tere”, „Maailm”, „!“, ..] => println!(„Tere Maailm!”),// проверяет первые два элемента «Foo» и «Bar», а остальное не важно
[„Foo”, „Bar”, ..] => println!(„Baz”),// игнорируем всё, но последний элемент должен быть «!».
[.., „!”] => println!(„!!!”),// в срез start включаем всё, кроме последнего элемента, который должен быть «z»
[start @ .., „z”] => println!(„algab: {:?}”, start),// в срез end помещаем всё, кроме первого элемента, который должен быть «a».
[„a”, end @ ..] => println!(„lõpeb: {:?}”, end),rest => println!(„{:?}”, rest),
}
} - Uus makro „matches!“ on lisatud, mis võtab sisendiks väljendi ja mustri, ning tagastab „true“, kui muster vastab väljendile. Mustris on võimalik kasutada toiminguid „|“ ja „if“.
match self.partial_cmp(other) {
Some(Less) => true,
_ => false,
}matches!(self.partial_cmp(other), Some(Less))
let foo = ‘f’;
assert!(matches!(foo, ‘A’..=’Z’ | ‘a’..=’z’));let bar = Some(4);
assert!(matches!(bar, Some(x) if x > 2)); - Paanikateade, mis ilmneb vale kasutamise korral
tüüpide Option ja Result jaoks, kajastavad nüüd ridade numbrid, mis viitavad koodile, mis tegi probleemse kõne, mitte viidatud koodile teostuse kohas libcore. Näiteks puudutab muudatus kõnesid unwrap ja expect, kui Option::None on tühi, või ebaõnnestumisi unwrap_err, expect, expect_err ja sarnaste meetodite kasutamisel Result tüübi puhul. - Pakihalduris Cargo on nüüd automaatne „proc_macro crate” lisamine blokki „extern” protseduurimakrodega pakettide jaoks. See muudatus võimaldab protseduurimakrode puhul kasutada direktiivi „use” ilma, et oleks vaja koodis näidata „extern crate proc_macro;”. Näiteks, kui programmis on rida „use proc_macro::TokenStream;”, siis kood töötab endiselt, isegi kui eemaldada „extern crate proc_macro;”.
- Standardteegi funktsioone on laiendatud. iter::Empty toetab Send ja Sync kõigi T väärtuste puhul.
Pin::{map_unchecked, map_unchecked_mut} kõned vajadusest tagastada tüübiväärtus „Sized” rakendamiseks.
io::Cursor'is PartialEq ja Eq. „const” tunnus, mis määrab, kas kasutada igas kontekstis konstantidena, Layout::new meetodi jaoks. - Uute API-de partii on klassifitseeritud stabiilseks, sealhulgas on stabiliseeritud CondVar::wait_while, CondVar::wait_timeout_while,
DebugMap::key, DebugMap::value,
ManuallyDrop::take,
ptr::slice_from_raw_parts_mut ja ptr::slice_from_raw_parts. - Meetod Error::description on kuulutatud vananenuks.
- Teise taseme tugi on tagatud platvormidele armv7a-none-eabi ja riscv64gc-unknown-linux-gnu. Standardraamatukogu tugi on tagatud platvormile riscv64gc-unknown-linux-gnu.
32-bitised Apple'i platvormid kolmandale toetuse tasemele, mis tähendab põhitoetust, kuid ilma automatiseeritud testimise ja ametlike kogumite avaldamiseta. Toetustaseme alandamine on tingitud Apple'i lõpetatud toest 32-bitiste platvormide osas.
Allikas: opennet.ru
