Modelando universos abiertos y cerrados de opciones en Rust

2025-02-21
Modelando universos abiertos y cerrados de opciones en Rust

Este artículo explora cómo modelar opciones en Rust, distinguiendo entre universos cerrados (donde todas las opciones son conocidas y fijas, como el tipo `Option` de Rust) y universos abiertos (donde se pueden agregar nuevas opciones). Para universos cerrados, los enums son adecuados. Los universos semiabiertos (donde los autores de la biblioteca pueden agregar opciones, pero los usuarios no), se manejan mejor con enums no exhaustivos, obligando a los usuarios a considerar patrones comodín y asegurando la compatibilidad con versiones anteriores de la API. Los universos totalmente abiertos se abordan mejor con cadenas o newtypes, o traits para mayor flexibilidad. El artículo también analiza las desventajas de usar una variante 'Desconocido' y explora el uso de traits sellados. El autor concluye recomendando un enfoque caso por caso, sopesando las compensaciones entre el enfoque más simple basado en cadenas y el enfoque más poderoso, pero más complejo, basado en traits.

Desarrollo