#enums #const #value #macro-derive

enum_const_value

为枚举提供常量值。支持单元和关联类型的枚举。每个变体都得到一个唯一的顺序值。

7个不稳定版本

0.4.3 2023年9月25日
0.4.2 2023年6月8日
0.4.1 2021年8月5日
0.4.0 2020年8月23日
0.1.0 2020年8月7日

#340进程宏

每月40次下载

MIT/Apache

10KB
109 代码行

枚举常量值

Latest Version Build Status

一个派生宏,将为枚举情况添加常量值,甚至为关联类型的枚举添加。处理具有关联类型的枚举时,宏会创建一个具有常量值的新枚举。

用法

[dependencies]
enum_const_value = "0.1.0"

现在在你的项目中,添加以下

use enum_const_value::EnumConstValue;

并在枚举上使用派生宏

#[derive(EnumConstValue)]
enum MyEnum {
    SomeI32(i32),
    SomeString(String)
}

现在,您可以使用枚举情况上的 const_value() 方法,如下所示

#[test]
fn test_my_enum() {
    assert_eq!(0, MyEnum::SomeI32(1).const_value());
    assert_eq!(1, MyEnum::SomeString("MyString".to_string()).const_value());

    assert_eq!(0, MyEnumConstValue::SomeI32.value());
    assert_eq!(1, MyEnumConstValue::SomeString.value());
}

待办事项

  • 自定义枚举情况值(可以通过添加属性来完成)
  • 自定义派生枚举名称(目前始终为 $ENUMNAME$ConstValue)

许可证

根据您的选择,许可协议为Apache许可证,版本2.0MIT许可证
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交给包含在此crate中的任何贡献,都将如上所述双重许可,不附加任何额外的条款或条件。

依赖关系

~300–750KB
~18K SLoC