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

String Error::description被软弃用是否意味着我必须重新编写当前的错误消息系统?,string,types,rust,String,Types,Rust,我注意到生锈了。建议使用Display或to_string()来获取错误描述,但这是否意味着我必须重新编写当前的错误消息系统来处理string,而不是&str 我正在使用这个代码,我注意到在野外的代码看起来很相似: fn description(&self) -> &str { match *self { Error::CannotDeriveFromHardenedKey => "cannot derive hardened key from

我注意到生锈了。建议使用
Display
to_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",
    }
}
这是否意味着我必须重新编写当前的错误消息系统来处理
String
,而不是
&str

否,这意味着您的类型的
Error
的新实现或将要更新的实现最好忽略方法
description
。这意味着,不要在您的
impl Error
原因中添加
fn description(&self)->&str{}
,这似乎是您试图执行的操作

实现它暂时可能仍然是可能的,但它本质上被限制为返回一个
&str
,这实际上是一个有限的签名


请注意,从Rust 1.42.0开始,此方法现在是。

“虽然使用它不会导致编译警告,但新代码应使用Display,而新IMPL可能会忽略它。若要以字符串形式获取错误描述,请使用To_string()。”已回答您--