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 或 http://opensource.org/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) } }