1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
extern crate proc_macro; use darling::FromDeriveInput; use quote::quote; use syn::{parse_macro_input, DeriveInput}; mod fields; mod variants; #[proc_macro_derive(FieldNames, attributes(field_names))] pub fn derive_field_names(input: proc_macro::TokenStream) -> proc_macro::TokenStream { fields::Receiver::from_derive_input(&parse_macro_input!(input as DeriveInput)) .map(|receiver| quote!(#receiver)) .unwrap_or_else(|err| err.write_errors()) .into() } #[proc_macro_derive(VariantNames, attributes(variant_names))] pub fn derive_variant_names(input: proc_macro::TokenStream) -> proc_macro::TokenStream { variants::Receiver::from_derive_input(&parse_macro_input!(input as DeriveInput)) .map(|receiver| quote!(#receiver)) .unwrap_or_else(|err| err.write_errors()) .into() }