use proc_macro::TokenStream;
use syn::DeriveInput;
mod generate;
pub(crate) mod utils;
#[proc_macro_derive(Serialize, attributes(ld))]
pub fn derive_serialize(item: TokenStream) -> TokenStream {
let input = syn::parse_macro_input!(item as DeriveInput);
let mut output = proc_macro2::TokenStream::new();
match generate::ser::subject(input) {
Ok(tokens) => output.extend(tokens),
Err(e) => output.extend(syn::Error::from(e).to_compile_error()),
}
output.into()
}
#[proc_macro_derive(Deserialize, attributes(ld))]
pub fn derive_deserialize(item: TokenStream) -> TokenStream {
let input = syn::parse_macro_input!(item as DeriveInput);
let mut output = proc_macro2::TokenStream::new();
match generate::de::subject(input) {
Ok(tokens) => output.extend(tokens),
Err(e) => output.extend(syn::Error::from(e).to_compile_error()),
}
output.into()
}