enum_generator/
enum_generator.rs

1pub use enum_generator_macros::generate_enum;
2
3#[test]
4fn run_tests() {
5
6	// demo test case 1 
7	// generate enum variants with a template.
8	// continues the pattern shown (either counting up integers or going through the alphabet)
9	// starting index does not necessarily have to be A or 1.
10
11	generate_enum!{ 
12		#[derive(Debug)]
13		enum FunctionKey {
14			F1: F _,
15			...
16			F24
17		}
18	}
19	// expands to: 
20	// #[derive(Debug)] enum FunctionKey
21	// {
22    //   F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16,
23    //   F17, F18, F19, F20, F21, F22, F23, F24
24	// }
25
26	let e = FunctionKey::F12;
27
28	// demo test case 2
29	generate_enum!{ 
30		#[derive(Debug)]
31		enum LetterKey {
32			LetterA: Letter _,
33			...
34			LetterZ
35		}
36	}
37
38	let e = LetterKey::LetterZ;
39	println!("{:?}", e);
40
41	// test case - suffix
42	generate_enum!{ 
43		#[derive(Debug)]
44		enum ExampleEnum {
45			Prefix1Suffix:  Prefix _ Suffix,
46			...
47			Prefix5Suffix
48		}
49	}
50
51
52	let e = ExampleEnum::Prefix3Suffix;
53	let e2 = ExampleEnum::Prefix4Suffix;	
54	assert!(e as u8 != e2 as u8);
55
56	// test case - capital letter & generics & struct
57	generate_enum!{ 
58		#[derive(Debug)]
59		enum ExampleEnum3<G> {
60			PrefixASuffix{ g: G } :  Prefix _ Suffix,
61			...
62			PrefixZSuffix{ g: G } 
63		}
64	}
65
66	let e = ExampleEnum3::PrefixZSuffix::<usize>{ g: 20 } ;	
67
68
69	// test case - lowercase letter & generics & struct
70	generate_enum!{ 
71		#[derive(Debug)]
72		enum ExampleEnum4<G> {
73			PrefixaSuffix{ g: G } :  Prefix _ Suffix,
74			...
75			PrefixzSuffix{ g: G } 
76		}
77	}
78
79	let e = ExampleEnum4::PrefixqSuffix::<usize>{ g: 20 } ;	
80
81}