4 ms·
To my surprise, it works partially on latest stable Rust: #[non_exhaustive] #[repr(C)] #[derive(Debug)] #[allow(dead_code)] enum Foo { A = 0,
by drran 6y ago
To my surprise, it works partially on latest stable Rust:
#[non_exhaustive]
#[repr(C)]
#[derive(Debug)]
#[allow(dead_code)]
enum Foo {
A = 0,
B = 1,
C = 2,
}
pub fn main() {
let bar = unsafe { std::mem::transmute::<i32, Foo>(33) };
println!("{:?}", bar);
let s = match bar {
Foo::A => ("A", bar as i32),
Foo::B => ("B", bar as i32),
Foo::C => ("C", bar as i32),
_ => ("Unknown", bar as i32),
};
println!("{:?}", s);
}
Standard Output
C
("Unknown", 33)