start to add serialiser

This commit is contained in:
Marc-Antoine Arnaud
2018-04-10 10:14:58 +02:00
parent f5a0a53d27
commit c22df74dd3
10 changed files with 218 additions and 39 deletions

View File

@@ -6,33 +6,25 @@ extern crate proc_macro2;
extern crate quote;
extern crate syn;
mod der;
mod de;
mod ser;
use proc_macro::TokenStream;
fn expand_derive_serialize(ast: &syn::DeriveInput) -> quote::Tokens {
let name = &ast.ident;
quote! {
impl YaSerialize for #name {
fn derive_serialize() {
println!("serialize {}", stringify!(#name));
}
}
}
}
#[proc_macro_derive(YaDeserialize, attributes(yaserde))]
pub fn derive_deserialize(input: TokenStream) -> TokenStream {
let ast = syn::parse(input).unwrap();
match der::expand_derive_deserialize(&ast) {
match de::expand_derive_deserialize(&ast) {
Ok(expanded) => expanded.into(),
Err(msg) => panic!(msg),
}
}
#[proc_macro_derive(YaSerialize)]
#[proc_macro_derive(YaSerialize, attributes(yaserde))]
pub fn derive_serialize(input: TokenStream) -> TokenStream {
let ast = syn::parse(input).unwrap();
let gen = expand_derive_serialize(&ast);
gen.into()
match ser::expand_derive_serialize(&ast) {
Ok(expanded) => expanded.into(),
Err(msg) => panic!(msg),
}
}