Rust:专业级错误处理工具 thiserror 详解
thiserror 是 Rust 中用于高效定义自定义错误类型的库,特别适合库开发。相比 anyhow 的应用级错误处理,thiserror 提供更精确的错误控制,让库用户能模式匹配具体错误。
📦 基本安装
在 Cargo.toml 中添加:
[dependencies]
thiserror = "1.0"
🧩 核心功能
1. 基础错误定义
use thiserror::Error;
#[derive(Error, Debug)]
enum MyError {
#[error("File not found: {0}")]
NotFound(String),
#[error("I/O error occurred")]
Io(#[from] std::io::Error),
#[error("Validation failed for {field}: {reason}")]
Validation {
field: &'static str,
reason: String,
},
}
2. 自动实现特征
自动为你的类型实现:
std::error::ErrorDisplay(通过#[error]属性)From(通过#[from]属性)
🛠️ 属性详解
1. #[error("格式化字符串")]
定义错误的显示信息:
#[error("Invalid value: {value} (allowed: {allowed_values:?})")]
InvalidValue {
value: i32,
allowed_values: Vec<i32>,
}
调用:
println!("{}", MyError::InvalidValue {
value: 42,
allowed_values: vec![1, 2, 3]
}

最低0.47元/天 解锁文章
544

被折叠的 条评论
为什么被折叠?



