Shared Enums
#[cxx::bridge]
mod ffi {
enum Suit {
Clubs,
Diamonds,
Hearts,
Spades,
}
}
Generated Rust:
Generated C++:
enum class Suit : uint8_t {
Clubs = 0,
Diamonds = 1,
Hearts = 2,
Spades = 3,
};
Speaker Notes
- در سمت Rust، کد تولید شده برای enums مشترک در واقع ساختاری است که یک مقدار عددی را بستهبندی میکند. به این دلیل که UB در ++C نیست تا یک کلاس enum مقداری متفاوت از همه انواع فهرست شده داشته باشد و نمایشدهنده Rust مورد نظر ما باید رفتار مشابهی داشته باشد.