hifa_yaserde_derive/
lib.rs1#![recursion_limit = "256"]
2
3extern 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}