Команда разработчиков с радостью представляет вам Rust 1.36!
Что нового в Rust 1.36?
А теперь подробнее:
- В Rust 1.36 наконец-то стабилизировали трейт Future.
- Крейт alloc.
Начиная с Rust 1.36, части std, которые зависят от глобального аллокатора (например, Vec<T>), находятся в крейте alloc. Теперь std реэкспортирует эти части. Больше об этом. - MaybeUninit<T> вместо mem::uninitialized.
В предыдущих релизах mem::uninitialized позволяла вам обходить проверку инициализации, использовалось это для ленивой аллокации массивов, но эта функция довольно-таки опасна (подробнее), поэтому был стабилизирован тип MaybeUninit<T>, который безопаснее.
Ну и так как MaybeUninit<T> является более безопасной альтернативой, то, начиная с Rust 1.38, mem::uninitialized будет являться устаревшей функцией.
Если хотите больше узнать про неинициализированную память, можете прочесть запись в блоге (Alexis Beingessner). - NLL для Rust 2015.
В анонсе Rust 1.31.0 разработчики рассказывали нам о NLL (Non-Lexical Lifetime), улучшении для языка, которое делает borrow checker умнее и более дружелюбнее к пользователю. Пример:
fn main() {
let mut x = 5;
let y = &x;
let z = &mut x; // This was not allowed before 1.31.0.
}В 1.31.0 NLL работал только в Rust 2018, с обещанием, что разработчики добавят поддержку и в Rust 2015.
Если хотите больше узнать про NLL, можете прочитать больше в этой записи в блоге (Felix Klocks). - Новый флаг для Cargo — —ofline.
В Rust 1.36 стабилизировали новый флаг для Cargo. Флаг —offline говорит Cargo использовать локально кешированные зависимости, для того, чтобы позже их можно было использовать без интернета. Когда нужные зависимости не доступны оффлайн, и если интернет все-таки нужен, то Cargo вернет ошибку. Для того, чтобы предварительно скачать зависимости, можно использовать команду cargo fetch, которая скачает все зависимости. - Здесь вы можете прочитать более детальный обзор изменений.
Также есть и изменения в стандартной библиотеке:
- Теперь макрос dbg!() может принимать несколько аргументов.
- Некоторое кол-во API теперь помечены const:
- Новые API, которые были стабилизированы:
- Другие изменения в стандартной библиотеке вы можете найти здесь.
Другие изменения Rust, Cargo и Clippy.
Источник: linux.org.ru