共有の列挙型
#[cxx::bridge]
mod ffi {
enum Suit {
Clubs,
Diamonds,
Hearts,
Spades,
}
}
生成された Rust:
生成された C++:
enum class Suit : uint8_t {
Clubs = 0,
Diamonds = 1,
Hearts = 2,
Spades = 3,
};
Speaker Notes
- Rust 側では、共有列挙型に対して生成されるコードは、実際には数値をラップした構造体です。これは、列挙型クラスがリストされたすべてのバリアントとは異なる値を保持することは C++ では UB ではなく、Rust 表現は同じ動作をする必要があるためです。