2 个版本
0.1.1 | 2024 年 5 月 18 日 |
---|---|
0.1.0 | 2024 年 4 月 12 日 |
#1826 在 Rust 模式
169 每月下载量
5KB
56 行
ERDP
ERDP 是一个非常小的 Rust crate,用于帮助显示错误。如果您使用 std::fmt::Display
来显示一个 std::error::Error
,如下面的代码所示
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),
}
您将得到的是一个顶层错误的简单消息
Failed to load config.json: couldn't open the specified file.
使用此 crate,您可以在错误值上使用 display
方法,例如
use erdp::ErrorDisplay;
eprintln!("Failed to load {}: {}.", path.display(), e.display());
那么输出将变为类似以下内容
Failed to load config.json: couldn't open the specified file -> No such file or directory.
许可证
MIT