15 个版本
0.2.0 | 2024年4月26日 |
---|---|
0.1.2 | 2024年4月18日 |
0.1.1 | 2024年3月6日 |
0.1.0 | 2024年1月15日 |
0.0.9 | 2023年11月29日 |
943 在 Rust 模式 中
每月下载量 3,404
在 4 个 包中使用 (直接使用 2 个)
26KB
437 行
thiserror-ext
为 thiserror
提供有用的扩展工具。有关更多详细信息,请参阅文档。
#[derive(
Debug,
thiserror::Error,
thiserror_ext::Box,
thiserror_ext::Construct,
thiserror_ext::ContextInto,
thiserror_ext::Macro,
)]
#[thiserror_ext(
newtype(name = Error, backtrace),
macro(path = "crate::foo"),
)]
enum ErrorKind {
#[error("cannot parse int from `{from}`")]
Parse {
source: std::num::ParseIntError,
from: String,
},
#[error("not yet implemented: {msg}")]
NotImplemented {
issue: Option<i32>,
#[message] msg: String,
},
#[error("internal error: {0}")]
Internal(String),
}
// `thiserror_ext::Construct`
let error: Error = Error::internal("oops");
// `thiserror_ext::Box`
assert_eq!(std::mem::size_of::<Error>(), std::mem::size_of::<usize>());
let bt: &Backtrace = std::error::request_ref(&error).unwrap();
// `thiserror_ext::ContextInto`
let result: Result<i32, Error> = "foo".parse().into_parse("foo");
// `thiserror_ext::AsReport`
//
// "cannot parse int from `foo`: invalid digit found in string"
println!("{}", result.unwrap_err().as_report());
// `thiserror_ext::Macro`
bail_not_implemented!(issue = 42, "an {} feature", "awesome");
依赖项
~310–780KB
~18K SLoC