El artículo técnico analiza las limitaciones actuales de la gestión de errores en Rust, destacando la tensión entre la precisión tipada y la conveniencia de propagación. El autor propone 'Eros', una librería que introduce el concepto de 'error sets' (conjuntos de errores) para resolver este conflicto. A diferencia de los enfoques tradicionales que requieren enumeraciones complejas o tipos opacos, Eros permite definir los tipos de errores posibles mediante tuplas abiertas, eliminando la necesidad de declarar nuevas enumeraciones para cada combinación de fallos.
El sistema opera mediante un tipo de resultado especial que gestiona estos conjuntos de errores. La función principal, 'union', envuelve el error de una operación en un conjunto específico, garantizando que el compilador verifique que solo se propagan los errores permitidos por la firma. Esto evita que se acumulen capas innecesarias de errores anidados y permite una recuperación más precisa. Además, el enfoque permite 'ensanchar' (widen) los conjuntos de errores al combinar operaciones, asegurando que el contexto de la operación se mantenga intacto.
Una característica clave es la capacidad de modificar el tipo de resultado mediante la recuperación de errores. Si una función maneja un error específico y lo resuelve, el conjunto de errores en la firma se reduce, reflejando que ese fallo ya no es posible para el llamador. Esto facilita la propagación de errores en aplicaciones donde no se requiere recuperación específica, permitiendo un flujo de errores más limpio y tipado solo donde es necesario. El artículo concluye que esta estrategia permite mantener la precisión tipada en librerías y aplicaciones críticas, mientras que en el resto del código se puede optar por una propagación más simple, mejorando la legibilidad y la seguridad del código.
