1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
extern crate proc_macro; use proc_macro::TokenStream; use darling::FromDeriveInput; mod common; mod de; mod ser; #[proc_macro_derive(BinSerialize, attributes(binserde))] pub fn bin_serialize_derive(input: TokenStream) -> TokenStream { let ast = syn::parse(input).expect("failed to parse token stream"); let opts: common::BinSerdeOpts = FromDeriveInput::from_derive_input(&ast).unwrap(); ser::impl_bin_serialize(&opts).into() } #[proc_macro_derive(BinDeserialize, attributes(binserde))] pub fn bin_deserialize_derive(input: TokenStream) -> TokenStream { let ast = syn::parse(input).expect("failed to parse token stream"); let opts: common::BinSerdeOpts = FromDeriveInput::from_derive_input(&ast).unwrap(); de::impl_bin_deserialize(&opts).into() }