Críticas al diseño del iterador RangeFrom en la biblioteca estándar de Rust

Fuentes: RangeFrom, Part 2..: What I think is wrong about the design

Un desarrollador cuestiona en un extenso artículo técnico el diseño del iterador RangeFrom (n..) de la biblioteca estándar de Rust. Tras detectar el problema a raíz de una publicación de James Munns de diciembre de 2025, el autor intentó primero resolverlo con un clippy lint, pero la cuestión terminó por convertirse en una reflexión más amplia sobre las propiedades que cabría esperar de ese iterador.

El texto enumera cinco propiedades razonables que un usuario asumiría: que n.. entregue todos los valores hasta el máximo inclusive, que solo produzca valores dentro del rango, que no entre en pánico con las comprobaciones de desbordamiento desactivadas, que sea monótonamente creciente si no hay desbordamiento, y que el comportamiento sea consistente entre tipos. El autor demuestra, con ejemplos de código, que ninguna se cumple del todo. Por ejemplo, con i y u el iterador puede desbordarse antes de alcanzar T::MAX; con char, AsciiChar, Ipv4Addr e Ipv6Addr entra en pánico al final; y con NonZero satura, repitiendo el último valor indefinidamente.

El artículo también señala la inconsistencia entre las siete implementaciones del trait Step presentes en std, que se reparten entre tres comportamientos distintos de desbordamiento, algo que, a su juicio, debería estar documentado localmente en cada tipo. Frente a quienes defienden la utilidad de RangeFrom con zip, el autor propone un método alternativo enumerate_with como prueba de concepto. El texto forma parte de una serie cuya primera entrega repasa los antecedentes históricos del tipo.