1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
extern crate proc_macro;

use quote::quote;
use syn::{parse_macro_input, DeriveInput};

mod derive;
mod value_expr;

use derive::Derive;

#[proc_macro_derive(StructMapper, attributes(struct_mapper))]
#[proc_macro_error::proc_macro_error]
pub fn derive_mapper(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
  let input = parse_macro_input!(tokens as DeriveInput);
  let derive: Derive = Derive::from_derive_input(&input);
  let tokens = quote!(#derive);
  tokens.into()
}