1 use ::num_enum::IntoPrimitive;
2 
3 // Guard against https://github.com/illicitonion/num_enum/issues/27
4 mod alloc {}
5 mod core {}
6 mod num_enum {}
7 mod std {}
8 
9 #[derive(IntoPrimitive)]
10 #[repr(u8)]
11 enum Enum {
12     Zero,
13     One,
14     Two,
15 }
16 
17 #[test]
simple()18 fn simple() {
19     let zero: u8 = Enum::Zero.into();
20     assert_eq!(zero, 0u8);
21 
22     let one: u8 = Enum::One.into();
23     assert_eq!(one, 1u8);
24 
25     let two: u8 = Enum::Two.into();
26     assert_eq!(two, 2u8);
27 }
28 
29 #[test]
catch_all()30 fn catch_all() {
31     #[derive(Debug, Eq, PartialEq, IntoPrimitive)]
32     #[repr(u8)]
33     enum Enum {
34         Zero = 0,
35         #[num_enum(catch_all)]
36         NonZero(u8),
37     }
38 
39     let zero: u8 = Enum::Zero.into();
40     assert_eq!(zero, 0u8);
41 
42     let one: u8 = Enum::NonZero(1u8).into();
43     assert_eq!(one, 1u8);
44 
45     let two: u8 = Enum::NonZero(2u8).into();
46     assert_eq!(two, 2u8);
47 }
48