El tipo ! (never) se añadió recientemente a Rust como anotación válida en cualquier posición del código, con su estabilización prevista para Rust 1.100. Aunque suele presentarse como el tipo bottom de la teoría de tipos, el artículo explica que en Rust se trata en realidad del tipo vacío, no del tipo bottom, y que ambos solo coinciden en lenguajes con subtipado.
El tipo vacío se define como un tipo sin constructores; dado que no tiene valores, desde él puede construirse cualquier otro tipo mediante una función conocida como absurd. El tipo bottom comparte esa ausencia de valores, pero se distingue porque es subtipo de todos los demás tipos, lo que permite usarlo directamente allí donde se espera otro tipo. Rust no dispone de subtipado general (solo para lifetimes), por lo que no puede definir el tipo bottom y aplica coerción implícita únicamente en expresiones cuyo tipo exacto es !, no cuando este aparece anidado dentro de otro tipo, como en un puntero a función fn(i32) -> !.
El texto compara el comportamiento de Rust con el de Scala (cuyo Nothing sí es tipo bottom gracias a su sistema de subtipado y varianza) y muestra cómo, en Rust, casos como asignar fn(i32) -> ! a fn(i32) -> i32 requieren una coerción explícita usando una variable intermedia de tipo !. El autor también critica la entrada de Wikipedia sobre el tipo bottom por inducir a error al sugerir que ambos tipos son intercambiables en cualquier sistema de tipos sound, cuando en realidad es indispensable la presencia de subtipado. Se incluyen además ejemplos en Haskell y una introducción formal a subtipado y varianza.
