hifa_yaserde_derive/
lib.rs

1#![recursion_limit = "256"]
2
3// Required for Rust < 1.42
4extern crate proc_macro;
5
6mod common;
7mod de;
8mod ser;
9
10use proc_macro::TokenStream;
11
12#[proc_macro_derive(YaDeserialize, attributes(yaserde))]
13pub fn derive_deserialize(input: TokenStream) -> TokenStream {
14  let ast = syn::parse_macro_input!(input as syn::DeriveInput);
15  match de::expand_derive_deserialize(&ast) {
16    Ok(expanded) => expanded.into(),
17    Err(msg) => panic!("{}", msg),
18  }
19}
20
21#[proc_macro_derive(YaSerialize, attributes(yaserde))]
22pub fn derive_serialize(input: TokenStream) -> TokenStream {
23  let ast = syn::parse_macro_input!(input as syn::DeriveInput);
24  match ser::expand_derive_serialize(&ast) {
25    Ok(expanded) => expanded.into(),
26    Err(msg) => panic!("{}", msg),
27  }
28}