Rust 1.36
Команда разработчиков с радостью представляет вам Rust 1.36!
Что нового в Rust 1.36?
Стабилизирован Future
трейт, из нового: крейт alloc
, MaybeUninit
, NLL для Rust 2015, новая реализация HashMap
, новый флаг --offline
для Cargo.
А тем подробнее:
- В Rust 1.36 наконец-то стабилизировали
Futute
трейт. alloc
крейт.
Начиная с Rust 1.36, частиstd
, которые зависят от глобального аллокатора (напримерVec
, находятся в крейтеalloc
. Теперьstd
ре-экспортирует эти части. Больше об этомMaybeUninit
вместоmem::uninitialized
.
В предыдущих релизахmem::uninitialized
позволяла вам обходить проверку инициализации, использовалось это для ленивой аллокации массивов, но эта функция довольно таки опасна (Подробнее), поэтому был стабилизирован типMaybeUninit
, который безопаснее.
Ну и так какMaybeUninit
является более безопасной альтернативой, то начиная с Rust 1.38mem::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
, которая скачает все зависимости. - Тут вы можете прочитать более детальный обзор изменений
Также есть и измения в стандартной библиотеке:
- Теперь макрос
gdb!()
может принимать несклько аргументов - Некотрое кол-во API теперь помечаны
const
- Новые APIs стабилизированы:
- Другие измениения в стандартной библиотеке вы можете найти тут
Другие измения Rust, Cargo, Clippy.
>>> Подробности