Команда разработчиков с радостью представляет вам 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, которые были стабилизированы:
- Другие изменения в стандартной библиотеке вы можете найти здесь.
>>> Подробности













