#variant #enums #automatic #field #convert #auto #derive

auto_from

自动为单字段枚举变体实现 std::convert::From

3个版本 (破坏性更新)

0.3.0 2019年1月22日
0.2.0 2018年12月12日
0.1.0 2018年10月29日

#80 in #auto


用于 4 crates

Apache-2.0

6KB
81

auto_from

这个库导出一个用于 From 的 derive 宏。它用于自动生成只包含一个字段的枚举变体的 std::convert::From 实现。目前它适用于元组或结构体变体。以下是一个小例子

use auto_from::From;

#[auto_from]
#[derive(Debug, PartialEq, From)]
enum Foo {
    Int(i32),
    Long { value: i64 },
}

fn main() {
    assert_eq!(Foo::Int(24), Foo::from(24i32));
    assert_eq!(Foo::Long{ value: 24 }, Foo::from(24i64));
}

当需要构建需要编写许多 From 实现的错误枚举,或在代码中跨多个位置使用许多 .map_error(|e| MyError::Variant(e)) 调用时,这应该非常有用。这个crate简化了这一过程。


lib.rs:

这个库允许您为枚举推导出 From 特性。它用于自动生成只包含一个字段的枚举变体的 std::convert::From 实现。目前它适用于元组或结构体变体。以下是一个小例子

use auto_from::From;

#[derive(Debug, PartialEq, From)]
enum Foo {
    Int(i32),
    Long { value: i64 },
}

assert_eq!(Foo::Int(24), Foo::from(24i32));
assert_eq!(Foo::Long{ value: 24 }, Foo::from(24i64));

当需要构建需要编写许多 From 实现的错误枚举,或在代码中跨多个位置使用许多 .map_error(|e| MyError::Variant(e)) 调用时,这应该非常有用。这个crate简化了这一过程。

依赖项

~2MB
~46K SLoC