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()。”已回答您--