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