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

Jer*_*oen 5 enums rust

有没有办法在Rust中使用显式表示类型进行C++样式枚举?例:

enum class Number: int16_t {
    Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine
};
Run Code Online (Sandbox Code Playgroud)

如果没有,还有另一种方法可以组织这样的变量吗?我正在与外部库连接,因此指定类型很重要.我知道我可以这样做:

type Number = int16_t;
let One: Number = 1;
let Two: Number = 2;
let Three: Number = 3;
Run Code Online (Sandbox Code Playgroud)

但在我看来,这引入了很多冗余;


注意这个问题不是重复的是否可以在Rust中包装C枚举?因为它是关于包装C++,而不是包装C.

A.B*_*.B. 11

您可以为枚举指定表示形式.

#[repr(i16)]
enum Foo {
    One = 1,
    Two = 2,
}
Run Code Online (Sandbox Code Playgroud)