Доступно обновление языка программирования Rust 1.22

Rust 1.22

Вышла новая версия 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