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