#error #error-handling #macro #define

error-ex

为那些希望创建和使用清晰、明确且易于的错误处理和创建的 Rust 用户设计的 Rust crate

1 个不稳定版本

0.1.3 2023 年 8 月 12 日
0.1.2 2023 年 8 月 12 日
0.1.1 2023 年 8 月 12 日
0.1.0 2023 年 8 月 12 日

#2295Rust 模式

MIT 许可证

9KB
59

错误 Ex

License: MIT


error-ex 是一个为那些希望创建和使用清晰、明确且易于的错误处理和创建的 Rust 用户设计的 Rust crate。

特性


此 crate 的目标是提供以下功能

  • 极简:随意定义错误!
  • 明确的错误创建:方便地使用关联消息构建自己的错误类型。
  • 错误映射:轻松地将一种错误类型映射到另一种类型,提高清晰度和上下文。

安装


将以下内容添加到您的 Cargo.toml

[dependencies]
error-ex = "0.1.3"

快速入门


创建和实例化明确的错误

use error_ex::{create_error, map_to__error};

create_error!(InputError => IllegalArgument, InvalidInput, MissingArgument);

然后您可以实例化此错误!

InputError::illegal_argument(format!("Your message here"));

错误映射

明确的方式

 use std::fs;
 use error_ex::{create_error};

 create_error!(FileError => IoError);
 create_error!(SchemaError => ParseError);

 let error: Result<(), FileError> = Err(FileError::io_error("".to_string()));

 let mapped = error.map_err(|error| {
     SchemaError::parse_error(format!("SchemaError::ParseError error {error}"))
 });

函数包装器

上述代码可以使用内置的较低阶函数和 map_to__error! 宏进行简化

use std::fs;
use std::io::Error;
use error_ex::{create_error};

create_error!(FileError => IoError);
create_error!(SchemaError => ParseError);

let error: Result<(), FileError> = Err(FileError::io_error("".to_string()));

let mapped = error.map_err(SchemaError::map_to_parse_error);

使用示例


请参阅 rust 文档和测试目录以获取示例用例。

贡献


欢迎并感谢对该库的任何 PR 或建议! :)

许可证


MIT License

Copyright (c) 2023 ICEFIR

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

依赖项