1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
use proc_macro::TokenStream; use syn::{parse_macro_input, DeriveInput}; mod deserialize; mod edn; mod enums; mod serialize; mod structs; #[proc_macro_derive(Serialize)] pub fn derive_serialize(input: TokenStream) -> TokenStream { let input = parse_macro_input!(input as DeriveInput); let type_name = input.ident; serialize::expand(&type_name, &input.data) .unwrap_or_else(|e| e.to_compile_error()) .into() } #[proc_macro_derive(Deserialize)] pub fn derive_deserialize(input: TokenStream) -> TokenStream { let input = parse_macro_input!(input as DeriveInput); let type_name = input.ident; deserialize::expand(&type_name, &input.data) .unwrap_or_else(|e| e.to_compile_error()) .into() }