1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
mod attributes; mod inspectable_enum; mod inspectable_struct; mod utils; #[proc_macro_derive(Inspectable, attributes(inspectable))] pub fn inspectable(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let input = syn::parse_macro_input!(input as syn::DeriveInput); let result = match &input.data { syn::Data::Struct(data) => inspectable_struct::expand_struct(&input, data), syn::Data::Enum(data) => inspectable_enum::expand_enum(&input, data), syn::Data::Union(_) => unimplemented!(), }; result.unwrap_or_else(|err| err.into_compile_error()).into() }