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)).into()
11}
12
13#[cfg(not(feature = "name-includes-plural"))]
14#[proc_macro_derive(NamePlural)]
15pub fn name_plural(input: TokenStream) -> TokenStream {
16    name::name_plural(parse_macro_input!(input as ItemEnum)).into()
17}
18
19#[proc_macro_derive(Predicates)]
20pub fn predicates(input: TokenStream) -> TokenStream {
21    predicates::predicates(parse_macro_input!(input as ItemEnum)).into()
22}
23
24#[proc_macro_derive(Variants)]
25pub fn variants(input: TokenStream) -> TokenStream {
26    variants::variants(parse_macro_input!(input as ItemEnum))
27        .unwrap_or_else(|e| e.into_compile_error())
28        .into()
29}