reveal

Crates.ioreveal
lib.rsreveal
version0.1.0
sourcesrc
created_at2023-05-15 05:50:21.72214
updated_at2023-05-15 05:50:21.72214
descriptionAutomatically add context to error
homepage
repositoryhttps://github.com/luoshuqi/reveal
max_upload_size
id864748
size4,613
(luoshuqi)

documentation

README

reveal

This library provides a macro to automatically add context to error.

Example

use std::fs;
use std::path::Path;

use reveal::error;

fn main() {
    let e = save_user_data(1, "test").unwrap_err();
    println!("{}", e);
}


#[error]
fn save_user_data(uid: usize, data: &str) -> reveal::Result<()> {
    file_put_contents(Path::new(&format!("/root/{}", uid)), data.as_bytes())?;
    Ok(())
}

// `content = "_"` excludes argument `content` from context
#[error(content = "_")]
fn file_put_contents(path: &Path, content: &[u8]) -> reveal::Result<()> {
    fs::write(path, content)?;
    Ok(())
}
Permission denied (os error 13)
0: fs :: write(path, content)
		in file_put_contents(path = "/root/1")
		at src/main.rs:21
1: file_put_contents(Path :: new(& format! ("/root/{}", uid)), data.as_bytes())
		in save_user_data(uid = 1, data = "test")
		at src/main.rs:14
Commit count: 6

cargo fmt