1个稳定版本

1.0.0 2021年4月23日

#2163过程宏

MIT 许可证

13KB
176

为枚举类型派生基本的错误类型基础设施。

支持未命名的单元枚举变体,并使用类型定义派生错误类型的 std::fmt::Displaystd::error:Error,以及 std::from::From<T> 用于任何具有一个参数(推断为错误类型)的未命名变体(目前通过类型名称是否为Error确定)。

可以使用auto_error属性覆盖默认行为

  • format_str接受一个字符串,该字符串成为该变体的格式字符串
  • make_from在设置为true时强制派生std::from::From
  • err强制std::error::Error实现返回内部类型,在调用source时或在其他情况下将内部类型视为错误类型。

From派生和source返回仅适用于单字段变体。

示例

#[derive(AutoError)]
use autoerror::AutoError;

enum Error {
    #[auto_error(format_str="Document not found")]
    NotFound,
    IO(std::io::Error),
    #[auto_error(make_from=true)]
    Other(String),
}

依赖项

~1.5MB
~35K SLoC