Вышла стабильная версия Rust 1.100.0. Главное изменение — разработчики теперь могут явно использовать тип ! в любом месте программы. Он обозначает вычисление, которое никогда не возвращает значение. По данным команды Rust, на стабилизацию этой возможности ушло около десяти лет и пять попыток.
Тип ! подходит, например, для функции, которая всегда завершает процесс, и для записи Result<T, !>. Прежний тип Infallible теперь стал его псевдонимом. При обновлении может потребоваться проверить код на Rust 2015, 2018 и 2021: в этих редакциях изменилось поведение вывода типа ! в случаях, когда компилятору приходится выбирать тип по умолчанию.
В стандартной библиотеке также стабилизировали основную часть API пользовательских распределителей памяти. Собственный распределитель теперь можно применять, в частности, с Vec и Box. Новая конструкция DropGuard помогает выполнять заданное действие при выходе переменной из области видимости — как при обычном завершении функции, так и при ошибке или panic.
Изменился и Cargo: он по умолчанию предупреждает о неиспользуемых зависимостях и лучше разделяет кэш сборки для разных конфигураций. Стабильной стала настройка min-publish-age: проект может задать минимальный возраст версии зависимости, чтобы Cargo при выборе пакетов пропускал слишком свежие публикации. Например, интервал в три дня оставляет время на обнаружение вредоносного обновления до его включения в сборку.
Источник: IT Home.