我想实现一个使用错误参数之一的错误描述,但我找不到一种方法来返回一个不会消失的描述.
#[derive(Debug, PartialEq)]
pub struct MissingParamError {
name: Box<String>
}
impl Error for MissingParamError {
fn description(&self) -> &str {
&format!("Missing parameter {}", self.name)
}
}
Run Code Online (Sandbox Code Playgroud)
这当然会因生成的描述超出范围而导致错误.
除此之外,有没有解决方法:
MissingParamError::new将预呈现完整描述Option<String>可以根据需要呈现描述并保持不变的内容没有; 方法签名根本不允许您动态构造字符串.此外,因为它使用&self(即不可变指针),您不能使用您的第二个解决方法.
由于实现所有类型Error必须也执行Display(其整个目的是用于向用户显示格式化的值),这将是适当的地方,以产生一个非平凡消息.
或者如你所说,如果你感到懒惰,那就去做吧MissingParamError::new.
实际上,如果你切换到内部可变性,你可以使用第二种解决方法RefCell<Option<String>>,但这有点矫枉过正.
实际上,实际上,你不能,因为你不能从一个长期借来的RefCell(感谢@bluss).
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |