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.

Lire plus
Développement Systèmes de types

Nextest : Pourquoi un processus par test ?

2025-01-12
Nextest : Pourquoi un processus par test ?

L'exécuteur de tests Rust cargo-nextest se distingue par l'exécution de chaque test dans un processus séparé. Cet article explore les raisons de ce choix, en soulignant non seulement les avantages techniques, mais aussi son rôle de point de coordination au sein du vaste écosystème Rust. L'isolation des processus prévient les interférences entre les tests, résolvant des problèmes comme la contention des ressources partagées et les fuites de mémoire, augmentant ainsi la fiabilité. Bien que la création de processus entraîne une certaine surcharge, les avantages surpassent les coûts, notamment pour les grands ensembles de tests, ce qui en fait un point focal stable et fiable dans les tests Rust.

Lire plus