Implementación Básica de Typestates en Rust - Arroyo, Marcelo (2019)
Generalmente la API de un módulo describe las operaciones disponibles, aunque el orden lícito de aplicación de las mismas queda implícito o documentado externamente debido a que los lenguajes de programación generalmente no proveen mecanismos de especificación del protocolo de uso. Typestates permite especificar estados de objetos de un determinado tipo. Cada estado habilita ciertas operaciones y prohíbe otras, permitiendo especificar el protocolo de uso de una API determinada. En este trabajo se presenta un patrón de implementación de typestates en el lenguaje de programación Rust y se analiza su sistema de tipos y mecanismos que permiten la verificación del typestate en tiempo de compilación, mostrando que cumple con las propiedades requeridas por las propuestas de verificación modular descriptas en la bibliografía especializada.