Crate reveal

Crate reveal 

Source
Expand description

§Reveal

reveal is a Rust library designed to automatically add context to errors, making it easier to trace and debug issues by including file names, line numbers, and function names in error messages.

§Install

cargo add reveal

§Features

  • Automatically adds context to errors.
  • Works with any error type that implements std::error::Error.
  • Provides detailed error tracebacks.

§Examples

Here’s a basic example demonstrating how to use the chain_err macro to add context to errors:

use reveal::{chain_err, map_err};

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

#[chain_err]
fn run() -> reveal::Result<()> {
    App.load_config()?;
    Ok(())
}

struct App;

#[chain_err]
impl App {
    #[chain_err]
    fn load_config(&self) -> reveal::Result<Vec<u8>> {
        Ok(read("non_exists_config.toml")?)
    }
}

fn read(path: &str) -> reveal::Result<Vec<u8>> {
    map_err!(std::fs::read(path), "read", path)
}

§Output:

When the above example is run, it produces the following output:

non_exists_config.toml: No such file or directory (os error 2)
#0 src/main.rs:26 demo::read()
#1 src/main.rs:21 demo::App::load_config()
#2 src/main.rs:11 demo::run()

Macros§

map_err

Structs§

Error
Represents an error with additional location information.
Location
Represents the location where an error occurred.

Type Aliases§

Result

Attribute Macros§

chain_err