Rust fail
Rust中错误有两种形式,一个是不可恢复错误,建议使用panic直接退出程序,并且有程序员修复源码。另一种是可恢复错误,Rust中一般通过返回值进行处理。
Fail trait
Fail trait 是用来替代std::error::Error的,它可以实现以下操作:
- 因为被Debug和Display约束(is bound by),因此它可以用这两种方式打印出来
- 因为实现了backtrace以及cause方法,所以用户可以看出错误发生的原因
- 因为被send和syn约束,所以可以在线程之间轻易的进行传递
- 其生命周期是 `static ,所以可以被用于具体类型
- 它支持在错误中封装额外的上下文信息
我们可以自定义Fail的内容,也可以简单的使用derive进行实现。
实现了fail trait的一般被称为错误(failure)
一般来讲,错误都会有或者说可以有一个更底层的错误类型,称作这个错误的cause。因此上述的cause方法允许我们将错误的cause暴露出来。
std::error::Error和Fail在内部可以没有损失的进行替代。
应当注意的是Fail trait并不是一个“ one size fits all” 的模型,我们还有很多处理的方式。
参考内容
Rust fail guide
深入浅出Rust