小编Joh*_*ger的帖子

Rust中的通用占位符或默认值

我正在尝试编写通用命令行解析器.我在使用泛型类型的"默认"值时遇到问题.cmd.invoke()返回Result<K, E>,所以没有问题存在,但如何代表一个占位符或默认值Ecmd_to_invokeNone?在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)

generics error-handling default rust

6
推荐指数
1
解决办法
644
查看次数

标签 统计

default ×1

error-handling ×1

generics ×1

rust ×1