3 #![feature(variant_count)]
4 #![feature(never_type)]
6 use std::mem::variant_count;
21 E { field_1: usize, field_2: Foo },
29 const TEST_VOID: usize = variant_count::<Void>();
30 const TEST_FOO: usize = variant_count::<Foo>();
31 const TEST_BAR: usize = variant_count::<Bar>();
33 const NO_ICE_STRUCT: usize = variant_count::<Baz>();
34 const NO_ICE_BOOL: usize = variant_count::<bool>();
35 const NO_ICE_PRIM: usize = variant_count::<*const u8>();
38 assert_eq!(TEST_VOID, 0);
39 assert_eq!(TEST_FOO, 3);
40 assert_eq!(TEST_BAR, 5);
41 assert_eq!(variant_count::<Void>(), 0);
42 assert_eq!(variant_count::<Foo>(), 3);
43 assert_eq!(variant_count::<Bar>(), 5);
44 assert_eq!(variant_count::<Option<char>>(), 2);
45 assert_eq!(variant_count::<Option<!>>(), 2);
46 assert_eq!(variant_count::<Result<!, !>>(), 2);