sagen, dass ich meine eigene Art in Rust Bibliothek definieren, etwa so:Deaktivieren Sie den Standardkonstruktor in Rust?
struct Date {
year: u16,
month: u8,
day: u8
}
impl Date {
fn new(y: u16, m: u8, d: u8) -> Date {
// Do some validation here first
Date { year: y, month: m, day: d }
}
}
Gibt es eine Möglichkeit zu erfordern Benutzer das Date::new
Konstruktor zu verwenden? Mit anderen Worten, können ihre eigenen Datum Struktur mit dem Standardkonstruktor irgendwie verbieten ich Benutzer zu schaffen, wie so:
let d = Date { 2017, 7, 10 };
Ich frage, weil es sich um eine schädliche Fehler zu sein scheint, wenn Sie nicht Entwickler zwingen kann, ihre Argumente durch ein laufen Batterie der Validierung vor dem Festlegen der Mitglieder einer Struktur. (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; fühlen Sie sich frei, das zu kommentieren.)
Dies würde normalerweise nicht als "Standardkonstruktor" bezeichnet werden; das würde "Date :: default" (von der ['Default'-Eigenschaft] (https://doc.rust-lang.org/std/default/trait.Default.html)) bedeuten. Ich würde das wahrscheinlich nur "struct literal syntax" nennen. – Shepmaster