8 个版本

0.1.9 2024年7月1日
0.1.8 2024年3月27日
0.1.5 2024年2月27日
0.1.1 2024年1月29日
0.1.0 2023年12月27日

#737 in Rust 模式

Download history 2/week @ 2024-05-29 3/week @ 2024-06-05 121/week @ 2024-06-26 40/week @ 2024-07-03 23/week @ 2024-07-24

每月 87 次下载

MIT 许可证

8KB
119

Conerror

conerror 是一个 Rust 库,旨在自动向错误添加上下文,通过在错误消息中包含文件名、行号和函数名,使问题追踪和调试更加容易。

功能

  • 自动向错误添加上下文。
  • 与实现 std::error::Error 的任何错误类型兼容。
  • 提供详细的错误跟踪。

示例

以下是一个基本示例,演示如何使用 conerror 宏向错误添加上下文

use conerror::conerror;
use std::fs::read;

fn main() {
    if let Err(e) = func1() {
        println!("{}", e);
    }
}

#[conerror]
fn func1() -> conerror::Result<()> {
    func2()?;
    Ok(())
}

#[conerror]
fn func2() -> conerror::Result<()> {
    Read.read()?;
    Ok(())
}

struct Read;

#[conerror]
impl Read {
    #[conerror]
    fn read(&self) -> conerror::Result<()> {
        read("/root")?;
        Ok(())
    }
}

输出

运行上述示例时,将产生以下输出

Permission denied (os error 13)
#0 src/main.rs:28 untitled::Read::read()
#1 src/main.rs:18 untitled::func2()
#2 src/main.rs:12 untitled::func1()

依赖关系

~260–710KB
~17K SLoC