Skip to content

Typestate

Joel Alvarez edited this page Jul 12, 2026 · 1 revision

Typestate

Typestate usa el sistema de tipos para representar estados válidos de un flujo.

Idea central

Un valor cambia de tipo conforme avanza por un proceso. Cada estado expone solo las operaciones válidas para ese punto.

En Rust suele aparecer como:

  • Structs genéricas con un parámetro de estado.
  • Tipos marcadores como MissingUrl, Paid o Authenticated.
  • PhantomData cuando el estado vive en el tipo, pero no en los datos.
  • Métodos que consumen self para producir el siguiente estado.

Ejemplos del repositorio

  • Request builder que no permite enviar sin URL: src/patterns/rust_idiomatic/typestate/request_builder.rs
  • Orden que solo puede enviarse después de pagarse: src/patterns/rust_idiomatic/typestate/paid_order.rs
  • Conexión que solo ejecuta consultas después de autenticarse: src/patterns/rust_idiomatic/typestate/authenticated_connection.rs

Guía técnica

La guía cercana al código vive en:

patterns/rust_idiomatic/typestate/README.md

Clone this wiki locally