enum_fun_macros/
lib.rs

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