Error::description 被软弃用是否意味着我必须重新编写当前的错误消息系统?

mpl*_*pls 2 string types rust

我注意到 Rust软弃用了Error::description. 建议使用Displayto_string()获取我的错误描述,但这是否意味着我必须重新编写当前的错误消息系统来处理String而不是&str

我正在使用此代码,并且我注意到野外的代码看起来很相似:

fn description(&self) -> &str {
    match *self {
        Error::CannotDeriveFromHardenedKey => "cannot derive hardened key from public key",
        Error::Ecdsa(ref e) => error::Error::description(e),
        Error::RngError(_) => "rng error",
        Error::MnemonicError(_) => "mnemonic error",
    }
}
Run Code Online (Sandbox Code Playgroud)

E_n*_*ate 5

这是否意味着我必须重新编写我当前的错误消息系统来处理String而不是&str

不,这意味着新的或将要更新的实现Error为你的类型最好舍弃的方法description。这意味着,不要添加fn description(&self) -> &str {}您的impl Error原因,这似乎是您想要做的。

暂时实现它可能仍然是可能的,但它本质上仅限于返回 a &str,这确实是一个有限的签名。

请注意,从 Rust 1.42.0 开始,此方法现在严格弃用