4 个版本 (2 个破坏性更改)
0.3.0 | 2023 年 9 月 5 日 |
---|---|
0.2.0 | 2023 年 3 月 22 日 |
0.1.1 | 2022 年 12 月 23 日 |
0.1.0 | 2022 年 12 月 21 日 |
#1353 in Rust 模式
91 每月下载
用于 zipsign
18KB
258 行
pretty-error-debug
显示错误链。在您的 fn main()
中,作为 Result<(), E>
使用,并配合 thiserror
使用。
此软件包简单地 剽窃 提取 了来自 anyhow
的所有相关格式化代码。
示例消息
Error: Got a 'middle' error
Caused by:
1: A nested error occured
2: 'inner' failed
3: Caught an error: Not implemented, yet.
使用 thiserror
#[derive(pretty_error_debug::Debug, thiserror::Error)]
pub enum MyError {
#[error("Error variant 1 happened")]
Variant1(#[from] Error1),
#[error("Error variant 2 happened")]
Variant2(#[from] Error2),
}
fn main() -> Result<(), MyError> {
...
}
使用 thiserror
,但没有新类型
#[derive(Debug, thiserror::Error)]
pub enum MyError {
#[error("Error variant 1 happened")]
Variant1(#[from] Error1),
#[error("Error variant 2 happened")]
Variant2(#[from] Error2),
}
fn main() -> Result<(), pretty_error_debug::Wrapper<MyError>> {
...
}
未使用 thiserror
use std::error::Error;
use std::fmt::{self, Write};
#[derive(pretty_error_debug::Debug)]
pub enum MyError {
Variant1(Error1),
Variant2(Error2),
}
impl fmt::Display for MyError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
MyError::Variant1(_) => write!(f, "Error variant 1 happened"),
MyError::Variant2(_) => write!(f, "Error variant 2 happened"),
}
}
}
impl Error for MyError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
match self {
MyError::Variant1(source) => Some(source),
MyError::Variant2(source) => Some(source),
}
}
}
fn main() -> Result<(), MyError> {
...
}
依赖项
~0–430KB