Rust 1.95.0: макрос cfg_select и условия по образцу прямо в match

16.04.2026

Вышел Rust 1.95.0. Появился макрос cfg_select! — выбор ветки по условию конфигурации на этапе компиляции, — а также условия с распаковкой образца прямо в выражениях match.

cfg_select!

Макрос разворачивается в правую часть первого подходящего плеча. По смыслу он заменяет популярный крейт cfg-if, но синтаксис другой.

Практическая польза не в том, что исчезает зависимость, а в том, что крейты, которым важно обойтись без посторонних зависимостей, получают решение внутри языка. Для кода, собираемого без стандартной библиотеки, каждый внешний крейт — это отдельная забота.

Условия по образцу в match

Цепочки объявлений условий, стабилизированные в 1.88, теперь работают и внутри match. То есть условие задаётся успешным распаковыванием, как в if, но в роли условия в выражении сопоставления.

Как и для обычных условий в match, компилятор не считает такие образцы при проверке полноты. Это стоит держать в голове: ветка может оказаться недостижимой с точки зрения компилятора.

Что стабилизировано для работы на низком уровне

  • AtomicPtr, AtomicBool и остальные атомарные типы получили update и try_update — сравнение и обновление без цикла, то есть вместо нескольких строк с повтором;
  • Layout::dangling_ptr, Layout::repeat, Layout::repeat_packed, Layout::extend_packed — то, что в обвязке для FFI раньше приходилось считать вручную;
  • Vec::push_mut и insert_mut с аналогами для VecDeque и LinkedList;
  • as_ref_unchecked и as_mut_unchecked для сырых указателей, core::hint::cold_path, тип Vec<T> для MaybeUninit<[T; N]>, конвертации Cell, константные fmt::from_fn и ControlFlow::is_break с is_continue.

Одна отмена

Дестабилизирована поддержка собственных спецификаций JSON для платформ на стабильной ветке. Тем, кто собирал свои цели на стабильной, придётся остаться на ночных сборках или ждать альтернативы.

Оригинал

Announcing Rust 1.95.0 от 16 апреля 2026 года

Упоминаний: 1 · Просмотров: 3