Вышла новая версия Rust — современного языка системного программирования, ориентированного на безопасность, скорость и параллелизм. Обновления Rust выпускаются каждые несколько недель, поэтому новые версии приносят относительно немного изменений.
Из-за обнаруженной в последний момент проблемы с обработкой ссылок на папки при работе Cargo под macOS High Sierra, практически одновременно с версией 1.22.0 была выпущена и версия 1.22.1, исправляющая эту проблему.
Основное нововведение в Rust 1.22 — возможность использовать оператор ?
с опциональными типами по аналогии с тем, как он используется с типами-результатами. Например, это позволяет вместо такого кода:
fn avatar_size(&self, user_id: u64) -> Option<(u32, u32)> {
let user = match self.find_user(user_id) {
Some(user) => user,
None => return None,
};
let avatar = match user.avatars().first() {
Some(avatar) => avatar,
None => None,
};
Some(avatar.size)
}
писать просто:
fn avatar_size(&self, user_id: u64) -> Option<(u32, u32)> {
Some(
self.find_user(user_id)?.avatars().first()?.size
)
}
В дальнейшем планируется расширить оператор ?
для поддержки произвольных, в том числе пользовательских, типов с помощью типажа Try
.
Другое небольшое, но важное улучшение — поддержка константных и статических значений типов, имеющих деструктор, то есть реализующих типаж Drop
. В дальнейшем планируется добавить поддержку константных функций, что позволит использовать в качестве констант и статических значений и значения типов, требующих инициализации.
Кроме того, была увеличена скорость компиляции, стабилизированы несколько новых API в рамках стандартной библиотеки, а также исправлено несколько багов. Подробный список изменений можно найти в GitHub-репозитории проекта.
Источник: блог Rust