如何在Rust中创建具有常量值的枚举?

亚历克斯

我可以做这个:

enum MyEnum {
    A(i32),
    B(i32),
}

但不是这个:

enum MyEnum {
    A(123), // 123 is a constant
    B(456), // 456 is a constant
}

我可以创建结构的AB用单场,然后执行该领域,但我觉得可能是一个更简单的方法。有没有?

休恩

回答此问题的最佳方法是弄清楚为什么要在枚举中使用常量:是将一个值与每个变量关联,还是希望每个变量都是该值(例如enumC或C ++中的)?

对于第一种情况,只保留没有数据的enum变体并创建一个函数可能更有意义:

enum MyEnum {
    A,
    B,
}

impl MyEnum {
    fn value(&self) -> i32 {
        match *self {
            MyEnum::A => 123,
            MyEnum::B => 456,
        }
    }
}
// call like some_myenum_value.value()

这种方法可以多次应用,以将许多单独的信息与每个变量关联起来,例如,也许您也想要一种.name() -> &'static str方法。将来,这些功能甚至可以标记为const功能。

对于第二种情况,您可以分配明确的整数标记值,就像C / C ++一样:

enum MyEnum {
    A = 123,
    B = 456,
}

可以通过match所有相同的方式对此进行编辑,但也可以将其强制转换为整数MyEnum::A as i32(请注意,类似MyEnum::A | MyEnum::B计算在Rust中不是自动合法的:枚举具有特定的值,它们不是位标记。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Pandas 中乘以具有常量值的列。类型错误

来自分类Dev

用LINQ从组中用逗号分隔值(具有定义的顺序);无法创建常量值,仅支持原始类型或枚举类型

来自分类Dev

如何在Java中创建类似于“动态枚举”的常量分组?

来自分类Dev

如何对这些代码进行更改以从类(具有静态int)或枚举中引用如下常量

来自分类Dev

如何在没有游标的MSSQL中使常量值

来自分类Dev

如何在Java代码中接收Simulink常量值?

来自分类Dev

如何在linux动态库中更改常量值?

来自分类Dev

如何在Java代码中接收Simulink常量值?

来自分类Dev

如何在Rust中定义“重叠”枚举?

来自分类Dev

“函数调用必须在常量表达式中具有常量值”

来自分类Dev

添加具有常量值的引用约束

来自分类Dev

如何通过枚举在Kotlin中创建编译时常量?

来自分类Dev

如何在Java枚举中定义静态常量?

来自分类Dev

如何在 Checkstyle 中强制枚举常量必须为大写?

来自分类Dev

如何在C ++中创建原子枚举?

来自分类Dev

如何在ember中创建枚举服务

来自分类Dev

如何在Swift中创建对枚举的绑定?

来自分类Dev

如何在C ++中创建原子枚举?

来自分类Dev

如何使用codeModel生成具有十六进制常量值的int字段

来自分类Dev

表达式必须在用户输入的大小的数组中具有常量值错误

来自分类Dev

如何查看.a lib文件中的常量值?

来自分类Dev

如何在C中枚举枚举中的所有内容?

来自分类Dev

如何在Redis中创建具有多个节点的Elasticache?

来自分类Dev

如何在iOS中创建具有动态内容的视图?

来自分类Dev

如何在bash中创建具有root特权的用户?

来自分类Dev

如何在Java中创建具有连接按钮的ButtonGroup?

来自分类Dev

如何在php中动态创建具有计数的对象?

来自分类Dev

如何在matplotlib中创建具有垂直阴影的图

来自分类Dev

如何在matplotlib中创建具有垂直阴影的图

Related 相关文章

  1. 1

    在 Pandas 中乘以具有常量值的列。类型错误

  2. 2

    用LINQ从组中用逗号分隔值(具有定义的顺序);无法创建常量值,仅支持原始类型或枚举类型

  3. 3

    如何在Java中创建类似于“动态枚举”的常量分组?

  4. 4

    如何对这些代码进行更改以从类(具有静态int)或枚举中引用如下常量

  5. 5

    如何在没有游标的MSSQL中使常量值

  6. 6

    如何在Java代码中接收Simulink常量值?

  7. 7

    如何在linux动态库中更改常量值?

  8. 8

    如何在Java代码中接收Simulink常量值?

  9. 9

    如何在Rust中定义“重叠”枚举?

  10. 10

    “函数调用必须在常量表达式中具有常量值”

  11. 11

    添加具有常量值的引用约束

  12. 12

    如何通过枚举在Kotlin中创建编译时常量?

  13. 13

    如何在Java枚举中定义静态常量?

  14. 14

    如何在 Checkstyle 中强制枚举常量必须为大写?

  15. 15

    如何在C ++中创建原子枚举?

  16. 16

    如何在ember中创建枚举服务

  17. 17

    如何在Swift中创建对枚举的绑定?

  18. 18

    如何在C ++中创建原子枚举?

  19. 19

    如何使用codeModel生成具有十六进制常量值的int字段

  20. 20

    表达式必须在用户输入的大小的数组中具有常量值错误

  21. 21

    如何查看.a lib文件中的常量值?

  22. 22

    如何在C中枚举枚举中的所有内容?

  23. 23

    如何在Redis中创建具有多个节点的Elasticache?

  24. 24

    如何在iOS中创建具有动态内容的视图?

  25. 25

    如何在bash中创建具有root特权的用户?

  26. 26

    如何在Java中创建具有连接按钮的ButtonGroup?

  27. 27

    如何在php中动态创建具有计数的对象?

  28. 28

    如何在matplotlib中创建具有垂直阴影的图

  29. 29

    如何在matplotlib中创建具有垂直阴影的图

热门标签

归档