自定义错误流行
自定义错误类型只需要实现Debug
和Display
特征即可。
use std::fmt
#[derive(Debug)]
struct AppError {
kind: String,
message: String,
}
impl fmt::Display for AppError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "An Error Occurred, Please Try Again!")
}
}
fn produce_error() -> Result<(), AppError> {
Err(AppError)
}
fn main() {
match produce_error() {
Err(e) => eprintln!("{}", e),
_ => println!("Noe error"),
}
eprintln("{:?}", produce_error());
}
转换错误类型
实现std::convert::from
特征:
impl From<io::Error> for AppError {
fn from(error: io::Error) -> Self {
AppError {
kind: String::from("io"),
message: error.toString(),
}
}
}
将io::Error
错误转换为自定义的AppError
错误。