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.
>>> Подробности
