2 releases

0.1.1 May 18, 2024
0.1.0 Apr 12, 2024

#8 in #displaying

Download history 74/week @ 2024-07-28 24/week @ 2024-08-04 36/week @ 2024-08-11 38/week @ 2024-08-18 49/week @ 2024-08-25 59/week @ 2024-09-01 38/week @ 2024-09-08 31/week @ 2024-09-15 67/week @ 2024-09-22 48/week @ 2024-09-29 40/week @ 2024-10-06 27/week @ 2024-10-13 38/week @ 2024-10-20 40/week @ 2024-10-27 34/week @ 2024-11-03 19/week @ 2024-11-10

131 downloads per month

MIT license

5KB
56 lines

ERDP

Crates.io Version

ERDP is a very small Rust crate to help with error displaying. If you use std::fmt::Display to display a std::error::Error like the following code:

use std::fs::File;
use std::path::{Path, PathBuf};
use thiserror::Error;

fn main() {
    let path = PathBuf::from("config.json");

    if let Err(e) = load_config(&path) {
        eprintln!("Failed to load {}: {}.", path.display(), e);
    }
}

fn load_config(path: &Path) -> Result<(), MyError> {
    let file = match File::open(path) {
        Ok(v) => v,
        Err(e) => return Err(MyError::OpenFileFailed(e)),
    };

    Ok(())
}

#[derive(Debug, Error)]
enum MyError {
    #[error("couldn't open the specified file")]
    OpenFileFailed(#[source] std::io::Error),
}

What you get is just a message from a top-level error:

Failed to load config.json: couldn't open the specified file.

With this crate you can use display method on the error value like:

use erdp::ErrorDisplay;

eprintln!("Failed to load {}: {}.", path.display(), e.display());

Then the output will change to something like:

Failed to load config.json: couldn't open the specified file -> No such file or directory.

License

MIT

No runtime deps