Crates.io | reveal |
lib.rs | reveal |
version | 0.1.0 |
source | src |
created_at | 2023-05-15 05:50:21.72214 |
updated_at | 2023-05-15 05:50:21.72214 |
description | Automatically add context to error |
homepage | |
repository | https://github.com/luoshuqi/reveal |
max_upload_size | |
id | 864748 |
size | 4,613 |
This library provides a macro to automatically add context to error.
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