Modélisation d'univers ouverts et fermés de choix en Rust

2025-02-21
Modélisation d'univers ouverts et fermés de choix en Rust

Cet article explore comment modéliser les choix en Rust, en distinguant entre les univers fermés (où toutes les options sont connues et fixes, comme le type `Option` de Rust) et les univers ouverts (où de nouvelles options peuvent être ajoutées). Pour les univers fermés, les énumérations sont appropriées. Les univers semi-ouverts (où les auteurs de la bibliothèque peuvent ajouter des options, mais pas les utilisateurs), sont mieux gérés avec des énumérations non exhaustives, forçant les utilisateurs à gérer les modèles génériques et assurant la compatibilité descendante de l'API. Les univers totalement ouverts sont mieux traités avec des chaînes de caractères ou des newtypes, ou des traits pour plus de flexibilité. L'article aborde également les inconvénients de l'utilisation d'une variante « Inconnu » et explore l'utilisation de traits scellés. L'auteur conclut en recommandant une approche au cas par cas, en pesant les compromis entre l'approche plus simple basée sur les chaînes de caractères et l'approche plus puissante, mais plus complexe, basée sur les traits.

Développement Systèmes de types