3 个不稳定版本
0.2.0 | 2024 年 3 月 4 日 |
---|---|
0.1.1 | 2018 年 5 月 15 日 |
0.1.0 | 2017 年 12 月 24 日 |
#52 in #user-friendly
每月 77 次下载
在 5 crates 中使用
19KB
230 行
common_failures
: 用户友好的 io::Error
包装器,quick_main!
等
我们提供支持
- 用户友好的带有路径名的
io::Error
包装器 - 格式化错误以供用户显示(包括整个错误链!),以及
- 如
quick_main!
之类的实用辅助工具。
基本目标是使 failure
尽可能方便,这样每个人都可以停止重新发明常见的支持代码。
用户友好的 io::Error
包装器
默认情况下,Rust 的 I/O 错误不包含有关失败操作的信息。这意味着你经常会看到类似
No such file or directory (os error 2)
但如果我们打印出类似的内容,对用户来说会好得多
Error: error reading the file no-such-file.txt
caused by: No such file or directory (os error 2)
为此,我们可以使用 io_read_context
和相关函数
use common_failures::prelude::*;
use std::fs::File;
use std::path::Path;
fn open_example(path: &Path) -> Result<File> {
Ok(File::open(path).io_read_context(path)?)
}
格式化错误以供用户显示
我们还提供将错误格式化为字符串的支持,包括错误“原因”的整个链
format!("{}", err.display_causes_and_backtrace());
quick_main!
宏
这是 error-chain
crate 中 quick_main!
的替代品。它生成一个 main
函数,该函数调用返回 Result<()>
的第二个函数,并打印出任何错误。
#[macro_use]
extern crate common_failures;
#[macro_use]
extern crate failure;
// This imports `Result`, `Error`, `failure::ResultExt`, and possibly
// other useful extension traits, to get you a minimal useful API.
use common_failures::prelude::*;
// Uncomment this to define a `main` function that calls `run`, and prints
// any errors that it returns to standard error.
quick_main!(run);
fn run() -> Result<()> {
if true {
Ok(())
} else {
Err(format_err!("an error occurred"))
}
}
依赖关系
~64KB