20 const unsafe fn tag(&self) -> u8 {
21 *(self as *const Self as *const u8)
26 const UNIT: Enum = Enum::Unit;
27 const TUPLE: Enum = Enum::Tuple(5);
28 const STRUCT: Enum = Enum::Struct{a: 7, b: 11};
30 // Ensure discriminants are correct during runtime execution
31 assert_eq!(3, unsafe { black_box(UNIT).tag() });
32 assert_eq!(2, unsafe { black_box(TUPLE).tag() });
33 assert_eq!(1, unsafe { black_box(STRUCT).tag() });
35 // Ensure discriminants are correct during CTFE
36 const UNIT_TAG: u8 = unsafe { UNIT.tag() };
37 const TUPLE_TAG: u8 = unsafe { TUPLE.tag() };
38 const STRUCT_TAG: u8 = unsafe { STRUCT.tag() };
40 assert_eq!(3, UNIT_TAG);
41 assert_eq!(2, TUPLE_TAG);
42 assert_eq!(1, STRUCT_TAG);