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