El lenguaje de programación Rust ha utilizado durante mucho tiempo el tipo never, escrito como ``!``, para marcar valores que nunca pueden existir, como el tipo de retorno de una función que nunca retorna o un valor en una rama que es demostrablemente inalcanzable. Durante años, el tipo se consideró inestable, disponible solo en compilaciones nightly tras puertas de características. El 24 de agosto de 2026, tras más de dos años de trabajo, el colaborador del compilador Rust "waffle" fusionó un pull request (rust-lang/rust#155499) que estabiliza el tipo never para todas las ediciones de Rust, entrando en vigor con el lanzamiento de Rust 1.100.
El logotipo estable de Rust utilizado en toda la documentación del lenguaje, representando la estabilización del tipo never en Rust 1.100.
La estabilización trae dos cambios concretos que afectan al código genérico y a la implementación de traits. Primero, se altera el respaldo del tipo never: antes de este cambio, cuando el compilador no podía inferir un tipo concreto, recurría al tipo unit ``()`` (cuyo único valor es ``()``). El nuevo comportamiento recurre al propio ``!``, lo que significa que el código que antes se compilaba bajo el antiguo respaldo ahora puede requerir anotaciones de tipo explícitas. Segundo, el tipo de la biblioteca estándar ``Infallible`` —anteriormente un tipo no habitado independiente utilizado como solución alternativa para el tipo never inestable— ahora se define como un alias de tipo para ``!``. Este alias permite que el optimizador conserve los beneficios de coerción de ``!`` mientras permite que el código existente que hace referencia a ``Infallible`` por nombre continúe compilando.
Imagen de gráfico abierto de GitHub para el PR que introdujo la estabilización del tipo never, mostrando el título del PR y los comentarios.
Estos cambios no están exentos de impacto. Los mantenedores de Rust ejecutaron la herramienta crater contra el conjunto completo de crates disponibles públicamente en crates.io y descubrieron que 3,300 crates presentaban algún tipo de regresión. De esos, siete crates estaban totalmente rotos y 1,553 fueron reparados mediante parches retroactivos (backports) en las bibliotecas principales que dependían del antiguo comportamiento de respaldo. Los crates restantes ya tenían especificaciones de tipo explícitas o podían mantenerse en una versión anterior de Rust (1.99) hasta que sus dependencias sean actualizadas.
Para los autores de bibliotecas y desarrolladores de aplicaciones, las consecuencias prácticas son claras: el código que dependía del respaldo del tipo never a ``()`` necesitará un tipo de retorno explícito o un parche menor. El equipo de Rust trabajó directamente con muchos mantenedores para entregar parches retroactivos, y la orientación general es permanecer en Rust 1.99 si el cambio rompe una dependencia crítica, o actualizar a la versión corregida de la biblioteca afectada. La mayoría de los usuarios cotidianos de Rust no notarán ninguna diferencia, ya que el tipo never se utiliza principalmente en código genérico y a nivel de trait.
El tipo never en sí tiene dos usos principales. La razón práctica es permitir un código genérico más eficiente; por ejemplo, el trait ``FromStr`` puede establecer su tipo asociado ``Err`` como ``!`` cuando una conversión nunca falla, permitiendo que el compilador descarte por completo la rama de error. La razón filosófica es dar al inferenciador de tipos una forma uniforme de manejar expresiones de bucles infinitos y otras construcciones que nunca producen un valor; ``!`` se coerce automáticamente a cualquier otro tipo, lo cual el compilador puede explotar para la eliminación de código muerto y otras optimizaciones.
En la práctica, los desarrolladores verán ``!`` aparecer en firmas genéricas, implementaciones de traits y tipos ``Result`` donde se sabe que la variante de error es imposible. La estabilización también significa que ``Infallible`` puede usarse indistintamente con ``!``, aunque el código que nombra explícitamente a ``Infallible`` seguirá funcionando sin modificaciones.
En general, la estabilización del tipo never marca un paso significativo hacia un sistema de tipos más predecible y optimizable en Rust, mientras que los cambios acompañantes en el respaldo y en ``Infallible`` están diseñados para mantener el ecosistema avanzando con la mínima rotura posible.