#enums #derive #deriving #macro #proc-macro

废弃 enum-kinds-macros

废弃,推荐使用 enum-kinds crate。生成具有匹配变体的枚举,但没有任何关联数据。enum-kinds-traits crate 包含此 crate 使用的 trait 定义。

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

MIT 许可证

9KB
95 代码行

enum-kinds-macros

Build Status Latest Version Rust Documentation

已废弃:此 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)] 属性会自动创建另一个名为 SomeEnumKindenum,其中包含与 SomeEnum 中每个变体匹配的单元变体。此外,SomeEnum 实现 ToKind trait,它提供了从 SomeEnumKind 构造匹配值的 kind 方法。

问题

虽然这些 crate 相对简单,但仍然可能出现问题。如果您在使用这些 crate 时遇到任何问题,请在 问题跟踪器 中报告。

许可证

这些 crate 在 MIT 许可证 的条款下提供。

依赖关系

~2MB
~47K SLoC