如何为Rust中的枚举指定表示类型以与C ++接口?

时间:2014-08-26 13:41:34

标签: enums rust

有没有办法在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。

1 个答案:

答案 0 :(得分:10)

您可以指定枚举的表示形式。

#[repr(i16)]
enum Foo {
    One = 1,
    Two = 2,
}