Por qué las pruebas externas de supertratos son incompatibles con Rust

Fuentes: Why external proofs of cyclic trait impls are incompatible with Rust

El artículo analiza la viabilidad de las estrategias de prueba para implementar supertratos en Rust, concluyendo que las pruebas externas son incompatibles con el diseño actual del lenguaje. El autor argumenta que, aunque las pruebas externas permiten evitar la circularidad en la validación de impl, generan inconsistencias graves al interactuar con las características inseguras (unsafe traits). En un sistema de pruebas externas, la implementación de un trazo no garantiza que sus supertratos se cumplan; la responsabilidad de verificarlo recae en el código que lo utiliza. Esta separación rompe la confianza necesaria en las impl inseguras, donde el compilador debe confiar ciegamente en que la implementación cumple las condiciones de seguridad. Por el contrario, las pruebas modulares, que requieren que la implementación demuestre explícitamente que sus supertratos son válidos, son la única opción coherente. Este enfoque asegura la seguridad del programa al validar cada módulo independientemente, evitando la dependencia circular y manteniendo la integridad de las garantías de seguridad de Rust. La discusión destaca la importancia de alinear las reglas de validación con el modelo de seguridad del lenguaje, evitando que las limitaciones de la verificación de tipos comprometan la seguridad de las operaciones inseguras.