Rust有一個有用的功能,您可以使用現有的結構並僅覆蓋其某些成員。如何聲明一個結構,其中只有一些成員可以使用另一個結構中的值?
new_tool = SomeTool {
unique_id: "tool.foobar".to_string(),
exec: Some(foobar_exec)
.. SomeTool::default()
};
我希望能夠宣佈SomeTool
,而不必明確列出:例如,下面的結構
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)>,
}
的值可以通過一個結構實例傳遞(如SomeTool::default()
)來初始化每個回調(在未來添加新的回調可能會導致在代碼庫中添加很多None
)。
這很好,但現在我可能會意外地忽略unique_id
進行其他一些初始化操作,它會使用default
中的任何內容。
有沒有辦法來描述一個結構,可以有一些成員覆蓋而不是其他人?
請注意,真實世界的用例比此更多的成員(使事故發生的機率更高),只是簡化了這個問題。