Modellierung offener und geschlossener Universen von Auswahlmöglichkeiten in Rust
Dieser Artikel untersucht, wie man Auswahlmöglichkeiten in Rust modelliert, wobei zwischen geschlossenen Universen (wo alle Optionen bekannt und festgelegt sind, wie der `Option`-Typ in Rust) und offenen Universen (wo neue Optionen hinzugefügt werden können) unterschieden wird. Für geschlossene Universen eignen sich Enums. Halboffene Universen (wo Bibliotheksautoren Optionen hinzufügen können, Benutzer aber nicht), werden am besten mit nicht-exhaustiven Enums behandelt, wodurch Benutzer gezwungen werden, Wildcard-Muster zu berücksichtigen und die Abwärtskompatibilität der API sichergestellt wird. Vollständig offene Universen werden am besten mit Strings oder Newtypes oder Traits für mehr Flexibilität behandelt. Der Artikel behandelt auch die Nachteile der Verwendung einer „Unknown“-Variante und untersucht die Verwendung von versiegelten Traits. Der Autor kommt zu dem Schluss, dass ein Fall-für-Fall-Ansatz zu empfehlen ist, wobei die Kompromisse zwischen dem einfacheren String-basierten Ansatz und dem leistungsfähigeren, aber komplexeren Trait-basierten Ansatz abgewogen werden.