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.

Leer más
Desarrollo

Nextest: ¿Por qué proceso por prueba?

2025-01-12
Nextest: ¿Por qué proceso por prueba?

El ejecutor de pruebas Rust cargo-nextest se diferencia por ejecutar cada prueba en un proceso separado. Este artículo profundiza en la razón de ser, enfatizando no solo los beneficios técnicos, sino también su papel como punto de coordinación dentro del vasto ecosistema Rust. El aislamiento de procesos evita interferencias entre pruebas, solucionando problemas como la contención de recursos compartidos y las fugas de memoria, aumentando así la confiabilidad. Si bien la creación de procesos genera cierta sobrecarga, las ventajas superan los costos, especialmente para grandes conjuntos de pruebas, convirtiéndolo en un punto focal estable y confiable en las pruebas Rust.

Leer más