#error #macro #automatic #context

conerror

Provides a macro that automatically adds context to errors

7 releases

0.1.8 Mar 27, 2024
0.1.7 Mar 20, 2024
0.1.5 Feb 27, 2024
0.1.1 Jan 29, 2024
0.1.0 Dec 27, 2023

#620 in Rust patterns

Download history 2/week @ 2024-01-23 1/week @ 2024-01-30 170/week @ 2024-02-20 159/week @ 2024-02-27 5/week @ 2024-03-05 131/week @ 2024-03-12 123/week @ 2024-03-19 96/week @ 2024-03-26 23/week @ 2024-04-02

537 downloads per month

MIT license

6KB
119 lines

Conerror

Provides a macro that automatically adds context to errors

example

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

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

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

#[conerror]
fn bar() -> conerror::Result<()> {
    Baz.baz()?;
    Ok(())
}

struct Baz;

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

Output:

Permission denied (os error 13)
#0 src/main.rs:28 demo::Baz::baz()
#1 src/main.rs:18 demo::bar()
#2 src/main.rs:12 demo::foo()

Dependencies

~300–750KB
~18K SLoC