Is it safe to transumte `Option ` to `u8` and back?
The Rust Programming Language Forum
Is it safe to transumte `Option ` to `u8` and back?
I wonder if the following code is sound: use core::mem::transmute; #[derive(Debug)] #[repr(u8)] enum MyEnum { A, B, C, } const { assert!(size_of::<Option<MyEnum>>() == 1) } let a = Some(MyEnum::B); // SAFETY: ??? let t: u8 = unsafe { transmute(a) }; println!("{t}"); // SAFETY: we got `t` from transmuting `Option<MyEnum>` let b: Option<MyEnum> = unsafe { transmute(t) }; println!("{b:?}"); // SAFETY: we know that `t` corresponds to a `Some` value let c: MyEnum = unsafe { transmute(...
I wonder if the following code is sound: use core::mem::transmute; #[derive(Debug)] #[repr(u8)] enum MyEnum { A, B, C, } const { assert!(size_of::<Option<MyEnum>>() == 1) } let a…
0 comments
No comments yet.