mod enum_impl; mod field; mod struct_impl; mod visibility; pub fn derive(input: proc_macro2::TokenStream) -> proc_macro2::TokenStream { let input = syn::parse2::(input).unwrap(); match input { syn::Item::Struct(input) => struct_impl::generate(input), syn::Item::Enum(input) => enum_impl::generate(input), _ => panic!("Invalid input"), } }