Deaktiviere den Standardkonstruktor in Rust?

8

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:

%Vor%

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.)

    
Jonathan Wilbur 10.07.2017, 16:25
quelle

1 Antwort

9

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.

    
Matthieu M. 10.07.2017 16:29
quelle

Tags und Links