Команда разработчиков с радостью представляет вам Rust 1.36!
Что нового в Rust 1.36?
Стабилизирован трейт Future
, из нового: крейт alloc
, MaybeUninit<T>
, NLL для Rust 2015, новая реализация HashMap<K, V>
и новый флаг --offline
для Cargo.
А теперь подробнее:
- В 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 умнее и более дружелюбнее к пользователю. Пример:В 1.31.0 NLL работал только в Rust 2018, с обещанием, что разработчики добавят поддержку и в Rust 2015.fn main() { let mut x = 5; let y = &x; let z = &mut x; // This was not allowed before 1.31.0. }
Если хотите больше узнать про NLL, можете прочитать больше в этой записи в блоге (Felix Klocks). - Новый флаг для Cargo -
--ofline
.
В Rust 1.36 стабилизировали новый флаг для Cargo. Флаг--offline
говорит Cargo использовать локально кешированные зависимости, для того, чтобы позже их можно было использовать без интернета. Когда нужные зависимости не доступны оффлайн, и если интернет все-таки нужен, то Cargo вернет ошибку. Для того, чтобы предварительно скачать зависимости, можно использовать командуcargo fetch
, которая скачает все зависимости. - Здесь вы можете прочитать более детальный обзор изменений.
Также есть и изменения в стандартной библиотеке:
- Теперь макрос
dbg!()
может принимать несколько аргументов. - Некоторое кол-во API теперь помечены
const
: - Новые API, которые были стабилизированы:
- Другие изменения в стандартной библиотеке вы можете найти здесь.
>>> Подробности