5 个版本 (1 个稳定版本)
1.0.0 | 2021年5月4日 |
---|---|
0.3.1 | 2020年2月15日 |
0.3.0 |
|
0.2.0 | 2019年9月18日 |
0.1.0 | 2019年6月20日 |
#10 in #chain
1,112 每月下载量
在 18 crates 中使用
14KB
192 行
Easy-error
这个 crate 是一个轻量级的错误处理库,旨在与标准的 Error
特性良好地协同工作。它适用于快速原型设计或命令行应用程序,其中任何错误都会直接反馈给用户。这个 crate 有四个主要组件
- 一个基于字符串的基本错误类型,适用于快速原型设计或面向人类的错误。
- 一种优雅的方式遍历错误的起因。
- 一些宏,使错误返回更加便捷。
- 一个“终止”类型,当从
main
函数返回时会产生格式良好的错误消息。
Rust 版本要求
当前版本需要 Rustc 1.46 或更高版本。一般来说,这个 crate 可以与支持的最老版本的 Ubuntu LTS 上的 Rustc 版本进行编译。任何需要比支持的最老版本的 Ubuntu LTS 上的 Rustc 更新版本的改变都将被视为重大更改。
示例
use std::{fs::File, io::Read};
use easy_error::{bail, ensure, Error, ResultExt, Terminator};
fn from_file() -> Result<i32, Error> {
let file_name = "example.txt";
let mut file = File::open(file_name).context("Could not open file")?;
let mut contents = String::new();
file.read_to_string(&mut contents).context("Unable to read file")?;
contents.trim().parse().context("Could not parse file")
}
fn validate(value: i32) -> Result<(), Error> {
ensure!(value > 0, "Value must be greater than zero (found {})", value);
if value % 2 == 1 {
bail!("Only even numbers can be used");
}
Ok(())
}
fn main() -> Result<(), Terminator> {
let value = from_file().context("Unable to get value from file")?;
validate(value).context("Value is not acceptable")?;
println!("Value = {}", value);
Ok(())
}