Rust có một tính năng hữu ích trong đó bạn có thể sử dụng cấu trúc hiện có và chỉ ghi đè một số thành viên của cấu trúc đó. Ví dụ, một giá trị của cấu trúc sauLàm thế nào để khai báo một cấu trúc mà chỉ một số thành viên có thể sử dụng một giá trị từ cấu trúc khác?
struct SomeTool {
pub unique_id: String,
pub poll: Option<fn(&Context) -> bool>,
pub exec: Option<fn(&mut Context) -> ToolResult>,
pub modal: Option<fn(&mut Context) -> ToolResult>,
pub ui: Option<fn(&mut UIPanel)>,
}
có thể được khởi tạo bằng cách đi qua trong một trường hợp struct (ví dụ SomeTool::default()
):
new_tool = SomeTool {
unique_id: "tool.foobar".to_string(),
exec: Some(foobar_exec)
.. SomeTool::default()
};
Tôi muốn để có thể tuyên bố SomeTool
mà không cần phải rõ ràng danh sách mọi cuộc gọi lại (thêm các cuộc gọi lại mới trong tương lai có thể dẫn đến nhiều sự bổ sung của None
trên tất cả một codebase).
Điều này hoạt động tốt, nhưng bây giờ tôi có thể vô tình bỏ qua unique_id
để khởi tạo một số khác và nó sẽ sử dụng bất kỳ nội dung nào trong số default
.
Có cách nào để mô tả cấu trúc có thể có một số thành viên bị ghi đè nhưng không phải là các thành viên khác không?
Lưu ý rằng trường hợp sử dụng thực tế có nhiều thành viên hơn số này (tạo cơ hội tai nạn cao hơn), đơn giản hóa cho câu hỏi.