Апублікаваны рэліз мовы сістэмнага праграмавання Іржа 1.42, заснаванага праектам Mozilla. Мова сфакусаваная на бяспечнай працы з памяццю, забяспечвае аўтаматычнае кіраванне памяццю і дае сродкі для дасягнення высокага паралелізму выканання заданняў, пры гэтым абыходзячыся без выкарыстання зборшчыка смецця і час выканання.
Аўтаматычнае кіраванне памяццю ў Rust пазбаўляе распрацоўніка ад маніпулявання паказальнікамі і абараняе ад праблем, якія ўзнікаюць з-за нізкаўзроўневай працы з памяццю, такіх як зварот да вобласці памяці пасля яе вызвалення, разнайменаванне нулявых паказальнікаў, вынахад за межы буфера і да т.п. Для распаўсюджвання бібліятэк, забеспячэння зборкі і кіравання залежнасцямі праектам развіваецца пакетны менеджэр грузавы, які дазваляе атрымаць патрэбныя для праграмы бібліятэкі ў адзін клік. Для размяшчэння бібліятэк падтрымліваецца рэпазітар crates.io.
Дададзена падтрымка шаблонаў для супастаўлення элементаў зрэзаў (дынамічных масіваў, slice). Калі раней дапушчаліся дакладныя супастаўленні, то зараз дададзеная магчымасць выкарыстання канструкцый з пазнакай ".." для ахопу пакінутых элементаў масіва. Напрыклад:
fn foo(words: &[&str]) {
match words {
// правярае пачатковыя элементы масіва з ігнараваннем
наступных за імі элементаў
["Hello", "World", "!", ..] => println!("Hello World!"),
// правярае першыя два элементы "Foo" і "Bar", а астатняе не важна
["Foo", "Bar", ..] => println!("Baz"),
// ігнаруем усё, але апошні элемент павінен быць «!».
[.., «!»] => println!(«!!!»),
// у зрэз start уключаем усё, акрамя апошняга элемента, які павінен быць «z»
[start @.., "z"] => println!("starts with: {:?}", start),
// у зрэз end змяшчаем усё, акрамя першага элемента, які павінен быць "a".
[«a», end @ ..] => println!(«ends with: {:?}», end),
rest => println!(«{:?}», rest),
}
}
Дададзены новы макрас "matches!", які прымае на ўваходзе выраз і шаблон, а вяртае "true", калі шаблон адпавядае выразу. У шаблоне магчыма выкарыстанне аперацый "|" і "if".
match self.partial_cmp(other) {
Some(Less) => true,
_ => ілжыва,
}
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));
У panic-паведамленнях, якія выводзяцца пры некарэктным выкарыстанні
тыпаў Option і Result, зараз адлюстроўваюцца нумары радкоў са спасылкай на код, які ажыццявіў праблемны выклік, а не спасылкі на код рэалізацыі выкліку ў libcore. Напрыклад, змена закранае выклік unwrap і expect над Option::None ці збоі пры выкарыстанні unwrap_err, expect, expect_err і падобных метадаў для тыпу Result.
У пакетным мэнэджары Cargo забяспечана аўтаматычная падстаноўка "proc_macro crate" у блок "extern" для пакетаў з працэдурнымі макрасамі. Дадзеная змена дазваляе ўжываць дырэктыву "use" да працэдурных макрасаў без неабходнасці ўказання ў кодзе "extern crate proc_macro;". Напрыклад, калі ў праграме выкарыстоўваецца радок "use proc_macro::TokenStream;", то код зараз застанецца працоўным, калі з яго выдаліць "extern crate proc_macro;".
Пашыраны магчымасці стандартнай бібліятэкі. У iter::Empty дададзена падтрымка Send і Sync для любых значэнняў T.
Выклікі Pin::{map_unchecked, map_unchecked_mut} пазбаўлены ад неабходнасці вяртаць значэнне тыпу для рэалізацыі "Sized".
У io::Cursor рэалізаваны PartialEq і Eq. Прыкмета "const", які вызначае магчымасць выкарыстання ў любым кантэксце замест канстант, ужыты для метаду Layout::new.
У разрад стабільных пераведзена новая порцыя API, у тым ліку стабілізаваны CondVar::wait_while, CondVar::wait_timeout_while,
DebugMap::key, DebugMap::value,
ManuallyDrop::take,
ptr::slice_from_raw_parts_mut і ptr::slice_from_raw_parts.
Абвешчаны састарэлым метад Error::description.
Забяспечаны ў другі ўзровень падтрымай для платформаў armv7a-none-eabi і riscv64gc-unknown-linux-gnu. Забяспечана падтрымка стандартнай бібліятэкі для платформы riscv64gc-unknown-linux-gnu.
32-разрадныя платформы Apple паніжаны да трэцяга ўзроўню падтрымкі, які мае на ўвазе базавую падтрымку, але без аўтаматызаванага тэсціравання і публікацыі афіцыйных зборак. Паніжэнне ўзроўню падтрымкі абумоўлена спыненнем суправаджэння кампаніяй Apple 32-разрадных платформаў.