4 个版本
使用旧的 Rust 2015
0.2.1 | 2018年3月6日 |
---|---|
0.2.0 | 2018年3月5日 |
0.1.1 | 2017年5月17日 |
0.1.0 | 2017年5月16日 |
#50 在 #deriving
9KB
95 代码行
enum-kinds-macros
已废弃:此 crate 以及 enum-kinds-traits
已被 enum-kinds
crate 替换。请用户迁移到新 crate,因为进一步的开发将在此处进行。
生成具有匹配变体的枚举,但没有任何关联数据。 enum-kinds-traits
crate 包含此 crate 使用的 trait 定义。
换句话说,enum-kinds-macros
会自动生成与原始 enum
具有相同变体集的 enum
,但删除所有嵌入数据(即所有变体都是单元变体)。此外,enum-kinds-macros
为原始 enum
实现 ToKind
trait,允许从 SomeEnumKind
获取关联的单元变体。
这些 crate 与稳定的 Rust 版本兼容。
示例
#[macro_use]
extern crate enum_kinds_macros;
extern crate enum_kinds_traits;
use enum_kinds_traits::ToKind;
#[derive(EnumKind)]
#[enum_kind_name(SomeEnumKind)]
enum SomeEnum {
First(String, u32),
Second(char),
Third
}
#[test]
fn test_enum_kind() {
let first = SomeEnum::First("Example".to_owned(), 32);
assert_eq!(first.kind(), SomeEnumKind::First);
}
#[derive(EnumKind)]
属性会自动创建另一个名为 SomeEnumKind
的 enum
,其中包含与 SomeEnum
中每个变体匹配的单元变体。此外,SomeEnum
实现 ToKind
trait,它提供了从 SomeEnumKind
构造匹配值的 kind
方法。
问题
虽然这些 crate 相对简单,但仍然可能出现问题。如果您在使用这些 crate 时遇到任何问题,请在 问题跟踪器 中报告。
许可证
这些 crate 在 MIT 许可证 的条款下提供。
依赖关系
~2MB
~47K SLoC