1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
extern crate proc_macro; extern crate serde_codegen; use proc_macro::TokenStream; #[proc_macro_derive(Serialize, attributes(serde))] pub fn derive_serialize(input: TokenStream) -> TokenStream { match serde_codegen::expand_derive_serialize(&input.to_string()) { Ok(expanded) => expanded.parse().unwrap(), Err(msg) => panic!(msg), } } #[proc_macro_derive(Deserialize, attributes(serde))] pub fn derive_deserialize(input: TokenStream) -> TokenStream { match serde_codegen::expand_derive_deserialize(&input.to_string()) { Ok(expanded) => expanded.parse().unwrap(), Err(msg) => panic!(msg), } }