2 releases

0.1.1 May 18, 2024
0.1.0 Apr 12, 2024

#15 in #displaying

Download history 15/week @ 2024-11-15 24/week @ 2024-11-22 72/week @ 2024-11-29 193/week @ 2024-12-06 106/week @ 2024-12-13 94/week @ 2024-12-20 102/week @ 2024-12-27 105/week @ 2025-01-03 120/week @ 2025-01-10 67/week @ 2025-01-17 90/week @ 2025-01-24 112/week @ 2025-01-31 63/week @ 2025-02-07 56/week @ 2025-02-14 110/week @ 2025-02-21 89/week @ 2025-02-28

331 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