Rust有一个有用的功能,你可以使用现有的结构体并仅覆盖其中一些成员。例如,以下结构体的值:
我希望能够声明
这种方法很有效,但是现在我可能无意中忽略了另一些初始化的
是否有一种描述结构体的方法,使其可以覆盖某些成员但不覆盖其他成员?
请注意,实际用例比这更具有成员(增加了事故的机会),只是为了提问而简化。
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()
)来初始化:
new_tool = SomeTool {
unique_id: "tool.foobar".to_string(),
exec: Some(foobar_exec)
.. SomeTool::default()
};
我希望能够声明
SomeTool
而不必明确列出每个回调函数(将来添加新的回调函数可能会导致在整个代码库中添加许多None
)。这种方法很有效,但是现在我可能无意中忽略了另一些初始化的
unique_id
,并且它将使用default
中的任何内容。是否有一种描述结构体的方法,使其可以覆盖某些成员但不覆盖其他成员?
请注意,实际用例比这更具有成员(增加了事故的机会),只是为了提问而简化。