如何将to_string()功能添加到枚举?

时间:2018-10-09 12:14:41

标签: string error-handling rust traits

我正在尝试创建实现Error的{​​{1}}枚举。我已经尝试to_string()为他们服务,但这似乎还不够。

这是我正在从事的枚举:

derive(Debug)

我想做的是:

#[derive(Debug, Clone)]
pub enum InnerError {
    InnerErrorWithDescription(String),
}

#[derive(Debug, Clone)]
pub enum OuterError {
    OuterErrorWithDescription(String),
}

我无法将// result type <T,InnerErrorWithDescription> result.map_err(|err| { Error::OuterErrorWithDescription(err.to_string())}) // .to_string() is not available 枚举类型转换为InnerError

要实施该程序我应该更改什么?

我已经在此处编写了枚举类型及其值的示例:

Rust Playground

但是,我仍然必须在匹配情况下指定类型及其描述,还有其他通用实现吗?

1 个答案:

答案 0 :(得分:8)

您的枚举应实现Display;来自ToString文档:

  

此特征对于任何实现的类型都会自动实现   Display特质。因此,ToString不应该实现   直接:应该改为实施Display,然后您将获得   ToString免费实施。

编辑:我已经调整了您的游乐场示例;我认为您可能会追赶like this