如何在Rust中指定枚举的基础类型?

时间:2017-01-14 09:04:20

标签: enums rust

给定一个带有一些未键入值的简单枚举,可能希望此枚举的大小使用较小的整数类型,然后使用默认值。例如,这提供了将枚举存储在u8

数组中的功能
enum MyEnum { 
    A = 0,
    B,
    C,
}

可以使用u8数组并将它们与某些常量进行比较,但我希望使用枚举来确保在匹配语句中处理所有可能性。

如何指定它以使其size_of匹配所需的整数类型?

2 个答案:

答案 0 :(得分:10)

这可以使用representation (repr)说明符来完成。

#[repr(u8)]
enum MyEnum { A = 0, B, C, }

超出该类型范围的指定值将引发编译器警告。

答案 1 :(得分:0)

你是什么意思"我们可能想要them"?

程序中的ABC是用户定义的值构造函数,而不是OOP中已知的field。相反,您可以为参数指定类型,如下所示。

enum Message {
    Quit,
    ChangeColor(i32, i32, i32),
    Move { x: i32, y: i32 },
    Write(String),
}

该代码段来自https://doc.rust-lang.org/book/enums.html

相关问题