1extern crate proc_macro;
2
3use proc_macro::TokenStream;
4
5mod helpers;
6mod parse_item;
7mod codegen;
8
9#[proc_macro_derive(Serialize, attributes(nanojson))]
10pub fn derive_serialize(input: TokenStream) -> TokenStream {
11 match parse_item::parse_item(input) {
12 Ok(item) => match codegen::gen_serialize(&item) {
13 Ok(ts) => ts,
14 Err(err) => err,
15 },
16 Err(err) => err,
17 }
18}
19
20#[proc_macro_derive(Deserialize, attributes(nanojson))]
21pub fn derive_deserialize(input: TokenStream) -> TokenStream {
22 match parse_item::parse_item(input) {
23 Ok(item) => match codegen::gen_deserialize(&item) {
24 Ok(ts) => ts,
25 Err(err) => err,
26 },
27 Err(err) => err,
28 }
29}