Команда Rust рада объявить о новом выпуске Rust 1.95.0. Rust — это язык программирования, который дает каждому возможность создавать надежное и эффективное программное обеспечение.

Если у вас уже установлена предыдущая версия Rust через rustup, вы можете получить 1.95.0 командой:

$ rustup update stable

Если у вас еще не установлен Rust, вы можете получить rustup на соответствующей странице нашего сайта, а также ознакомиться с подробными примечаниями к выпуску 1.95.0.

Если вы хотите помочь нам, тестируя будущие релизы, попробуйте локально переключиться на beta-канал (rustup default beta) или nightly-канал (rustup default nightly). Пожалуйста, сообщайте о любых найденных ошибках!

Что вошло в стабильный 1.95.0

cfg_select!

В Rust 1.95 появилась макрокоманда cfg_select!, которая работает примерно как match на этапе компиляции по cfg. Она решает ту же задачу, что и популярный крейт cfg-if, хотя и с другим синтаксисом. cfg_select! разворачивается в правую часть первой ветки, чей предикат конфигурации вычисляется в true. Несколько примеров:

cfg_select! {
    unix => {
        fn foo() { /* функциональность только для unix */ }
    }
    target_pointer_width = "32" => {
        fn foo() { /* функциональность для не-unix, 32-бит */ }
    }
    _ => {
        fn foo() { /* резервная реализация */ }
    }
}

let is_windows_str = cfg_select! {
    windows => "windows",
    _ => "not windows",
};

if-let guards в match-выражениях

В Rust 1.88 были стабилизированы цепочки let. В Rust 1.95 эта возможность пришла и в match-выражения, позволяя задавать условия на основе сопоставления с образцом.

match value {
    Some(x) if let Ok(y) = compute(x) => {
        // И `x`, и `y` доступны здесь
        println!("{}, {}", x, y);
    }
    _ => {}
}

Обратите внимание: сейчас компилятор не учитывает образцы, сопоставленные в if let-guards, как часть проверки полноты покрытия (exhaustiveness) всего match, так же как и в случае с обычными if-guards.

Стабилизированные API

Эти API, ранее уже стабильные, теперь также стабильны в const-контекстах:

Дестабилизированные JSON-спецификации целей

Rust 1.95 убирает в stable поддержку передачи пользовательской спецификации цели в rustc. Это не должно затронуть пользователей Rust, работающих с полностью stable toolchain, поскольку сборка стандартной библиотеки (включая только core) и так требовала возможностей, доступных только в nightly.

Мы также собираем сценарии использования пользовательских целей в tracking issue, пока решаем, стоит ли в будущем стабилизировать какую-либо форму этой функциональности.

Другие изменения

Смотрите полный список изменений в Rust, Cargo и Clippy.

Участники релиза 1.95.0

Над созданием Rust 1.95.0 работало много людей. Без вас это было бы невозможно. Спасибо!

Комментарии (1)


  1. OldFisher
    17.04.2026 11:47

    2026-04-17 14:14 Rust 1.94.0: метод array_windows у массива, ключ include в конфигурационных файлах, поддержка TOML 1.1

    2026-04-17 14:20 Rust 1.95.0: макрос cfg_select!, if-let guards в match-выражениях

    Довольно часто обновления выходить стали, это приятно.