2 个版本
0.1.1 | 2023年9月11日 |
---|---|
0.1.0 | 2023年9月11日 |
#2001 在 开发工具
12KB
52 代码行
traceback-derive
traceback-derive
是一个过程宏库,旨在通过提供自定义宏来增强 traceback-error
库的功能,从而简化 Rust 中的错误处理和回溯。
用法
要在您的 Rust 项目中使用 traceback-derive
,请按照以下步骤操作
- 在您的
Cargo.toml
中将traceback-derive
和traceback-error
添加为依赖项
[dependencies]
traceback-derive = "0.1.1"
traceback-error = "0.1.5"
#[traceback]
属性增强了函数的回溯功能,使其更容易处理错误并捕获详细的回溯信息。
- 将
traceback
宏应用于您的函数,以创建和处理具有回溯的错误
#[traceback_derive::traceback]
fn my_function() -> Result<(), traceback_error::TracebackError> {
// Your code here
risky_function()?;
// ...
}
traceback!
宏简化了错误创建并捕获相关上下文信息。
示例
以下是一个示例,说明 traceback-derive
如何简化错误处理,与直接使用 traceback-error
相比
没有 traceback-derive
(直接使用 traceback-error
)
use traceback_error::{traceback, TracebackError};
fn main() {
match caller_of_tasks() {
Ok(_) => {}
Err(e) => {
traceback!(e, "One of the tasks failed");
}
}
}
fn task_that_may_fail() -> Result<(), TracebackError> {
return Err(traceback!("task_that_may_fail failed"));
}
fn other_task_that_may_fail() -> Result<(), TracebackError> {
return Err(traceback!("other_task_that_may_fail failed"));
}
fn caller_of_tasks() -> Result<(), TracebackError> {
match task_that_may_fail() {
Ok(_) => {}
Err(e) => {
return Err(traceback!(err e));
}
};
match other_task_that_may_fail() {
Ok(_) => {}
Err(e) => {
return Err(traceback!(err e));
}
};
Ok(())
}
使用 traceback-derive
use traceback_error::{traceback, TracebackError};
fn main() {
match caller_of_tasks() {
Ok(_) => {}
Err(e) => {
traceback!(e, "One of the tasks failed");
}
}
}
fn task_that_may_fail() -> Result<(), TracebackError> {
return Err(traceback!("task_that_may_fail failed"));
}
fn other_task_that_may_fail() -> Result<(), TracebackError> {
return Err(traceback!("other_task_that_may_fail failed"));
}
#[traceback_derive::traceback]
fn caller_of_tasks() -> Result<(), TracebackError> {
task_that_may_fail()?;
other_task_that_may_fail()?;
Ok(())
}
当展开时,这两个代码片段是等价的,但 traceback-derive
简化了错误处理和捕获。
贡献
欢迎贡献!请随意在 GitHub 仓库上打开问题或拉取请求。该项目仍处于非常初期的开发阶段,尚未建立适当的贡献指南。
许可证
此库根据 MIT 许可证 和 Apache 许可证第 2 版 双重许可。您可以使用这两个许可证中的任何一个使用此库。请参阅 LICENSE-MIT 和 LICENSE-APACHE-2.0 文件,了解许可证的完整内容。
GitHub 仓库
有关更多信息以及为 traceback-derive
的开发做出贡献,请访问 GitHub 仓库。
依赖项
~285–740KB
~18K SLoC