Sagen wir, ich definiere meinen eigenen Typ in einer Rust-Bibliothek, so:
%Vor% Gibt es eine Möglichkeit, Benutzer für die Verwendung des Konstruktors Date::new
zu verwenden? Mit anderen Worten, kann ich irgendwie verbieten, dass Benutzer ihre eigene Date-Struktur mit dem Standardkonstruktor wie folgt erstellen:
Ich frage, weil es ein nachteiliger Fehler zu sein scheint, wenn Sie Entwickler nicht zwingen können, ihre Argumente durch eine Reihe von Validierungen zu testen, bevor Sie die Mitglieder einer Struktur setzen. (Obwohl, vielleicht gibt es ein anderes Muster, das ich in Rust verwenden sollte, wie Daten zu validieren, wenn sie verwendet werden, anstatt wenn sie erstellt werden; zögern Sie nicht, das zu kommentieren.)
TL; DR: Der "Standardkonstruktor" ist standardmäßig bereits deaktiviert.
Die struct
-Syntax ist nur für diejenigen verfügbar, die Zugriff auf alle die Felder von struct
haben.
Folglich ist es nur im selben Modul gemäß den Datenschutzregeln zugänglich, es sei denn, alle Felder sind mit pub
gekennzeichnet. In diesem Fall ist es überall zugänglich, wo struct
ist.
Beachten Sie, dass das Gleiche auch für Funktionen gilt, da new
hier nicht als pub
markiert ist. Es kann nur auf das aktuelle Modul zugegriffen werden.
Tags und Links rust