1个不稳定版本
0.1.0 | 2022年7月2日 |
---|
#18 在 #try-from
985 每月下载量
用于 17 个crates(通过 atm0s-sdn-network)
8KB
87 行
此crate允许自动在合适的枚举上实现From
和反向TryFrom
。
在你有一个封装了多种不同类型的枚举,并且你希望为每种类型都实现一个From
或反向TryFrom
实现的情况下(例如,这在错误处理中很常见,当你想封装来自不同库的错误时),手动实现可能会相当繁琐。
使用此crate提供的From
和TryInto
派生宏,这项工作可以自动化。
示例
定义一个Error
类型,它可以从std::fmt::Error
和std::io::Error
转换(为了方便使用问号运算符),并且还提供了一个包含自定义消息的变体,该变体不应自动转换
#[derive(convert_enum::From)]
enum Error {
#[convert_enum(optout)]
Custom(Cow<'static, str>),
Fmt(std::fmt::Error),
Io(std::io::Error),
}
这会导致以下实现被自动生成
impl From<std::fmt::Error> for Error {
fn from(val: std::fmt::Error) -> Self {
Self::Fmt(val)
}
}
impl From<std::io::Error> for Error {
fn from(val: std::io::Error) -> Self {
Self::Io(val)
}
}
依赖关系
~1.5MB
~36K SLoC