Skip to main content

nanojson_derive/
lib.rs

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}