Nói rằng tôi xác định loại của riêng tôi trong một thư viện Rust, như vậy:Tắt hàm tạo mặc định trong 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 }
}
}
Có cách nào để yêu cầu người dùng sử dụng các nhà xây dựng Date::new
? Nói cách khác, tôi làm cách nào cấm người dùng tạo ngày struct riêng của họ với các nhà xây dựng mặc định như vậy:
let d = Date { 2017, 7, 10 };
Tôi hỏi vì nó có vẻ là một lỗ hổng có hại nếu bạn không thể ép buộc các nhà phát triển để chạy lập luận của họ thông qua một pin xác nhận trước khi thiết lập các thành viên của một cấu trúc. (Mặc dù, có thể có một số mẫu khác mà tôi nên sử dụng trong Rust, chẳng hạn như xác thực dữ liệu khi chúng được sử dụng thay vì khi chúng được tạo; vui lòng nhận xét về điều đó.)
Điều này thường không được gọi là "hàm tạo mặc định"; điều đó có nghĩa là 'Date :: default' (từ [Default' trait] (https://doc.rust-lang.org/std/default/trait.Default.html)). Tôi có lẽ chỉ cần gọi cú pháp này là "struct literal syntax". – Shepmaster