enum_fun_macros/
lib.rs

1mod name;
2mod predicates;
3mod variants;
4
5use proc_macro::TokenStream;
6use syn::{ItemEnum, parse_macro_input};
7
8#[proc_macro_derive(Name, attributes(name))]
9pub fn name(input: TokenStream) -> TokenStream {
10    name::name(parse_macro_input!(input as ItemEnum))
11        .unwrap_or_else(|e| e.into_compile_error())
12        .into()
13}
14
15#[proc_macro_derive(Predicates)]
16pub fn predicates(input: TokenStream) -> TokenStream {
17    predicates::predicates(parse_macro_input!(input as ItemEnum)).into()
18}
19
20#[proc_macro_derive(Variants)]
21pub fn variants(input: TokenStream) -> TokenStream {
22    variants::variants(parse_macro_input!(input as ItemEnum))
23        .unwrap_or_else(|e| e.into_compile_error())
24        .into()
25}