zveřejněno vydání systémového programovacího jazyka Rez 1.42založil projekt Mozilla. Jazyk se zaměřuje na bezpečnou správu paměti, poskytuje automatickou správu paměti a poskytuje prostředky k dosažení vysokého paralelismu úloh a zároveň se vyhýbá použití garbage collectoru a runtime.
Automatická správa paměti Rust osvobozuje vývojáře od manipulace s ukazateli a chrání před problémy vyplývajícími z manipulace s pamětí na nízké úrovni, jako jsou například přístupy k paměti po volném čase, dereference nulového ukazatele, přetečení vyrovnávací paměti a podobně. Vyvíjí se správce balíčků pro distribuci knihoven, zajištění sestavení a správu závislostí v rámci projektu. Náklad, což vám umožní získat knihovny, které potřebujete pro program, jedním kliknutím. Hostitelské knihovny podporují úložiště crates.io.
Přidal podpora šablon pro párování částí řezů (dynamická pole, řez). Dříve byly povoleny přesné shody, ale nyní je možné použít konstrukce označené „..“ k pokrytí zbývajících prvků pole. Například:
fn foo(slova: &[&str]) {
shoda slov {
// zkontroluje počáteční prvky pole a ignoruje
prvky, které je následují
["Ahoj", "Světe", "!", ..] => println!("Ahoj světe!"),
// zkontroluje první dva prvky "Foo" a "Bar" a zbytek není důležitý
["Foo", "Bar", ..] => println!("Baz"),
// ignorovat vše, ale poslední prvek musí být "!".
[.., "!"] => println!("!!!"),
// do počátečního řezu zahrneme vše kromě posledního prvku, který by měl být „z“
[start @ .., "z"] => println!("začíná na: {:?}", start),
// do konečného řezu vložíme vše kromě prvního prvku, který by měl být „a“.
["a", end @ ..] => println!("ends with: {:?}", end),
zbytek => println!("{:?}", zbytek),
}
}
Přidáno nové makro „odpovídá!“, které bere výraz a vzor jako vstup a vrací „true“, pokud vzor odpovídá výrazu. Šablona může používat operace „|“. a pokud".
match self.partial_cmp(other) {
Některé (méně) => pravda,
_ => nepravda,
}
let bar = Some(4);
tvrdit!(odpovídá!(bar, Some(x) if x > 2));
Při nesprávném použití se zobrazují zprávy o panice
typy Option a Result nyní zobrazují čísla řádků s odkazem na kód, který provedl problematické volání, spíše než odkazy na kód implementující volání v libcore. Změna například ovlivní volání rozbalení a očekávání přes Option::None nebo dojde k selhání při použití metod unwrap_err, expect, expect_err a podobných metod typu Result.
Správce balíčků Cargo poskytuje automatické nahrazení „proc_macro crate“ do „externího“ bloku pro balíčky s procedurálními makry. Tato změna umožňuje použít direktivu "use" na procedurální makra, aniž by bylo nutné v kódu specifikovat "extern crate proc_macro;". Pokud například program používá řádek „use proc_macro::TokenStream;“, pak kód nyní zůstane funkční, pokud z něj bude odstraněno „externí přepravka proc_macro;“.
Možnosti standardní knihovny byly rozšířeny. In iter::Empty přidal Podpora odesílání a synchronizace pro jakékoli hodnoty T.
Pin hovorů::{map_unchecked, map_unchecked_mut} doručeno z nutnosti vracet hodnotu typu pro implementaci "Sized".
V io::Cursor implementováno PartialEq a Eq. Atribut „const“ určuje možnost použití v jakémkoli kontextu místo konstant, aplikovaný pro metodu Layout::new.
Nová část API byla převedena do stabilní kategorie, včetně stabilizovaných CondVar::wait_while, CondVar::wait_timeout_while,
DebugMap::key, DebugMap::value,
ManuallyDrop::take,
ptr::slice_from_raw_parts_mut a ptr::slice_from_raw_parts.
Metoda Error::description byla zastaralá.
Poskytuje podporu druhé úrovně pro platformy armv7a-none-eabi a riscv64gc-unknown-linux-gnu. Byla poskytnuta podpora pro standardní knihovnu pro platformu riscv64gc-unknown-linux-gnu.
32bitové platformy Apple degradován až na třetí úroveň podpory, což znamená základní podporu, ale bez automatického testování a zveřejňování oficiálních sestavení. Snížení podpory je způsobeno tím, že Apple již nepodporuje 32bitové platformy.