๊ณต์ Enum
#[cxx::bridge]
mod ffi {
enum Suit {
Clubs,
Diamonds,
Hearts,
Spades,
}
}
์์ฑ๋ ๋ฌ์คํธ:
#![allow(unused)] fn main() { #[derive(Copy, Clone, PartialEq, Eq)] #[repr(transparent)] pub struct Suit { pub repr: u8, } #[allow(non_upper_case_globals)] impl Suit { pub const Clubs: Self = Suit { repr: 0 }; pub const Diamonds: Self = Suit { repr: 1 }; pub const Hearts: Self = Suit { repr: 2 }; pub const Spades: Self = Suit { repr: 3 }; } }
Generated C++:
enum class Suit : uint8_t {
Clubs = 0,
Diamonds = 1,
Hearts = 2,
Spades = 3,
};
- Rust ์ธก์์, ๊ณต์ ๋ enum์ ๊ดํด ์์ฑ๋ ์ฝ๋๋ ์ค์ ๋ก ์ซ์ ๊ฐ์ ๋ํํ๋ ๊ตฌ์กฐ์ฒด์ ๋๋ค. ์ด๋ enum ํด๋์ค๊ฐ ๋์ด๋ ๋ชจ๋ ๋ณํ๊ณผ ๋ค๋ฅธ ๊ฐ์ ๋ณด์ ํ๋ ๊ฒ์ด C++์์ UB๊ฐ ์๋๊ณ Rust ํํ๋ ๋์ผํ ๋์์ ๊ฐ์ ธ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.