Стабилизирован тип never — «возврат, которого не бывает», стал частью языка

24.08.2026

Тип, который не имеет ни одного значения, стабилизирован. Написать такую функцию — то есть с результатом этого типа — теперь можно на обычной стабильной сборке.

Зачем нужен тип без значений

Он означает вычисление, которое никогда не завершается: вызов не возвращается, потому что программа переходит к следующей задаче, вызывает отложенное действие или завершается.

Раньше такой тип приходилось объявлять вручную внутри функции или определять в подходящем виде для каждого случая. Теперь он есть в языке, и компилятор понимает его смысл при проверке типов.

Что это даёт на практике

Один из ожидаемых эффектов — работа слоями сетевых протоколов. Код, который должен передать данные вниз, но получить запрос о чтении, выражает это возвратом «дальше некуда» вместо ошибки или вызова, который не существует. Без настоящего типа в системе типов приходилось вводить заменитель и согласовывать его с компилятором вручную.

Второй ожидаемый эффект — ослабление некоторых проверок владения. Отсутствие значения позволяет компилятору признать ветку кода недостижимой, а значит, не требовать в ней ни освобождения ресурсов, ни корректности владения.

Почему это было непросто

Подготовка заняла заметное время и шла в несколько шагов. В частности, в конце 2025 года два линта о совместимости вперёд стали ошибками компиляции — именно затем, чтобы вынудить код перестать полагаться на подстановку этого типа по умолчанию. Затронуто было около пятисот крейтов.

Оригинал

stabilize never type

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