Стабилизирован тип never — «возврат, которого не бывает», стал частью языка
24.08.2026Тип, который не имеет ни одного значения, стабилизирован. Написать такую функцию — то есть с результатом этого типа — теперь можно на обычной стабильной сборке.
Зачем нужен тип без значений
Он означает вычисление, которое никогда не завершается: вызов не возвращается, потому что программа переходит к следующей задаче, вызывает отложенное действие или завершается.
Раньше такой тип приходилось объявлять вручную внутри функции или определять в подходящем виде для каждого случая. Теперь он есть в языке, и компилятор понимает его смысл при проверке типов.
Что это даёт на практике
Один из ожидаемых эффектов — работа слоями сетевых протоколов. Код, который должен передать данные вниз, но получить запрос о чтении, выражает это возвратом «дальше некуда» вместо ошибки или вызова, который не существует. Без настоящего типа в системе типов приходилось вводить заменитель и согласовывать его с компилятором вручную.
Второй ожидаемый эффект — ослабление некоторых проверок владения. Отсутствие значения позволяет компилятору признать ветку кода недостижимой, а значит, не требовать в ней ни освобождения ресурсов, ни корректности владения.
Почему это было непросто
Подготовка заняла заметное время и шла в несколько шагов. В частности, в конце 2025 года два линта о совместимости вперёд стали ошибками компиляции — именно затем, чтобы вынудить код перестать полагаться на подстановку этого типа по умолчанию. Затронуто было около пятисот крейтов.
Оригинал
stabilize never type
Упоминаний: 1 · Просмотров: 5