3 个不稳定版本
使用旧的 Rust 2015
| 0.2.0 | 2016 年 7 月 29 日 | 
|---|---|
| 0.1.1 | 2016 年 7 月 29 日 | 
| 0.1.0 | 2016 年 7 月 29 日 | 
#8 in #custom-derive
9KB
149 行
error_derive
这个包允许通过 custom_derive! 自动导出 Error 实现。
许可证
许可协议为 MIT 许可证(见 LICENSE 或 https://open-source.org.cn/licenses/MIT)。
lib.rs:
这个包提供了一些用于导出 Error 枚举的有用方法和特质的宏。
所有这些宏都设计为与 custom_derive 包一起使用,尽管它们也可以独立使用。
示例
导出标准 Error 特质的实现。这还提供了必要的 Display 实现。
#[macro_use] extern crate custom_derive;
#[macro_use] extern crate error_derive;
custom_derive! {
#[derive(Debug,
ErrorFrom, ErrorDisplay, Error("very bad error"))]
pub enum Error {
Io(io::Error),
Utf8(Utf8Error),
}
}
let io_error = Error::Io(io::Error::last_os_error());
let utf8_error = Error::Utf8(from_utf8(&[0, 142]).unwrap_err());
assert_eq!("very bad error", io_error.description());
assert_eq!("very bad error", utf8_error.description());
assert!(io_error.cause().is_some());
assert!(utf8_error.cause().is_some());
概述
这个包允许导出以下特质
- ErrorFrom,它从每个包含内部- Error的枚举变体创建- From特质实现
- ErrorDisplay,它创建一个显示错误整个因果链的- Display特质实现
- Error,它使用给定的描述实现标准- Error特质
Error 和 ErrorDisplay 通常一起导出,尽管当然可以单独实现。
不使用 custom_derive! 的使用
尽管设计为与 custom_derive! 一起使用,但这个包中的所有宏都可以不使用它来使用。以下
custom_derive! {
#[derive(Debug, ErrorDisplay, Error("just I/O error"))]
pub enum JustIoError { ThisOne(io::Error) }
}
也可以写成
#[derive(Debug)]
pub enum JustIoError { ThisOne(io::Error) }
ErrorDisplay! { () pub enum JustIoError { ThisOne(io::Error) } }
Error! { ("just I/O error") pub enum JustIoError { ThisOne(io::Error) } }