有没有办法在Rust中使用显式表示类型进行C ++样式枚举?例如:
enum class Number: int16_t {
Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine
};
如果没有,还有另一种方法可以组织这样的变量吗?我正在与外部库连接,因此指定类型很重要。我知道我可以这样做:
type Number = int16_t;
let One: Number = 1;
let Two: Number = 2;
let Three: Number = 3;
但在我看来,这引入了很多冗余;
请注意,这个问题不是Is it possible to wrap C enums in Rust?的重复,因为它是关于包装C ++而不是包装C。
答案 0 :(得分:10)
您可以指定枚举的表示形式。
#[repr(i16)]
enum Foo {
One = 1,
Two = 2,
}