Say I zdefiniować własny typ w bibliotece rdza, tak:Wyłącz domyślny konstruktor w 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 }
}
}
Czy istnieje sposób wymagają użytkownikom użyć konstruktora Date::new
? Innymi słowy, czy mogę jakoś zabronić użytkownikom tworzenia własnych Data struct z domyślnego konstruktora tak:
let d = Date { 2017, 7, 10 };
Pytam, ponieważ wydaje się być szkodliwe wada, jeśli nie można zmusić deweloperów do uruchamiania swoich argumentów poprzez bateria sprawdzania poprawności przed ustawianiem członków struktury. (Chociaż może jest jakiś inny wzór, który powinienem zastosować w Rust, np. Sprawdzanie poprawności danych, gdy są one używane, a nie kiedy są tworzone, nie krępuj się komentować.)
Normalnie nie będzie to nazywane "domyślnym konstruktorem"; oznaczałoby to "Date :: default" (z ['Default' trait] (https://doc.rust-lang.org/std/default/trait.Default.html)). Prawdopodobnie nazwałbym to "składnią literalną struktury". – Shepmaster