我正在尝试编写通用命令行解析器.我在使用泛型类型的"默认"值时遇到问题.cmd.invoke()返回Result<K, E>,所以没有问题存在,但如何代表一个占位符或默认值E时cmd_to_invoke是None?在C#中,我可以使用default(E).在Rust中有这样的结构吗?
pub struct Cmd<K, E> {
cmds: Vec<Cmd<K, E>>,
}
impl<K, E> Cmd<K, E> {
pub fn invoke(&mut self, cmd_name: &str) -> Result<K, E> {
let cmd_to_invoke = self.cmds.iter_mut().find(|cmd| cmd.name == cmd_name);
if let Some(cmd) = cmd_to_invoke {
cmd.invoke()
} else {
// Some default / placeholder value for E
Err(/* ? */)
}
}
}
Run Code Online (Sandbox Code Playgroud)