foillsichte sgaoileadh cànan prògramadh siostam Meirge 1.42, a stèidhich am pròiseact Mozilla. Bidh an cànan ag amas air sàbhailteachd cuimhne, a’ toirt seachad riaghladh cuimhne fèin-ghluasadach, agus a’ toirt seachad innealan airson co-shìnteachd àrd-obrach a choileanadh gun a bhith a’ cleachdadh inneal-cruinneachaidh sgudail agus ùine ruith.
Bidh riaghladh cuimhne fèin-ghluasadach Rust a’ saoradh an leasaiche bho làimhseachadh phuing agus a’ dìon an aghaidh dhuilgheadasan ag èirigh bho làimhseachadh cuimhne aig ìre ìosal, leithid slighean cuimhne às deidh an-asgaidh, ro-aithrisean puing null, cus bufair, agus an leithid. Thathas a’ leasachadh manaidsear pacaid gus leabharlannan a sgaoileadh, dèanamh cinnteach à co-chruinneachadh agus riaghladh eisimeileachd leis a’ phròiseact. Cargo, a 'toirt cothrom dhut na leabharlannan a tha a dhìth airson a' phrògram fhaighinn ann an aon bhriogadh. Tha stòr a’ faighinn taic gus aoigheachd a thoirt do leabharlannan cliathaichean.io.
Air a chur ris поддержка шаблонов для сопоставления частей срезов (динамических массивов, 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,
_ => meallta,
}
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<T> air a chur ris поддержка Send и Sync для любых значений T.
Вызовы Pin::{map_unchecked, map_unchecked_mut} air a lìbhrigeadh от необходимости возвращать значение типа для реализации «Sized».
В io::Cursor air a chur an gnìomh 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-разрядных платформ.