Unions
์ ๋์จ ํ์ ์ ์ด๊ฑฐํ(enum)๊ณผ ๋น์ทํ์ง๋ง, ์ด๋ค ํ๋์ ํด๋นํ๋ ๊ฐ์ ๊ฐ์ง๊ณ ์๋์ง ์ฌ๋ถ๋ฅผ ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋์ผ๋ก ์ถ์ ํด์ผ ํฉ๋๋ค:
#[repr(C)] union MyUnion { i: u8, b: bool, } fn main() { let u = MyUnion { i: 42 }; println!("int: {}", unsafe { u.i }); println!("bool: {}", unsafe { u.b }); // Undefined behavior! }
๋ฌ์คํธ์๋ ์ด๊ฑฐํ์ด ์๊ธฐ ๋๋ฌธ์ ์ ๋์จ์ด ํ์ํ ๊ฒฝ์ฐ๋ ๊ทนํ ๋๋ญ ๋๋ค. ์ ๋์จ์ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ API๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ๋ ํ์ํฉ๋๋ค.
๋ฐ์ดํธ๋ค์ ํน์ ํ์
์ผ๋ก ์ฌํด์ ํ๊ณ ์ถ๋ค๋ฉด std::mem::transmute
๋ ์ข ๋ ์์ ํ zerocopy
ํฌ๋ ์ดํธ๋ฅผ ์ฌ์ฉํ์ธ์.