batbox_derive/
lib.rs

1#![recursion_limit = "128"]
2#![allow(unused_imports)]
3
4extern crate proc_macro;
5
6use darling::{FromDeriveInput, FromField};
7use proc_macro2::TokenStream;
8use quote::quote;
9
10mod diff;
11mod has_id;
12
13#[proc_macro_derive(Diff, attributes(diff))]
14pub fn derive_diff(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
15    diff::derive(input.into()).into()
16}
17
18#[proc_macro_derive(HasId, attributes(has_id))]
19pub fn derive_has_id(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
20    let input: syn::DeriveInput = syn::parse_macro_input!(input);
21    match has_id::DeriveInput::from_derive_input(&input) {
22        Ok(input) => input.derive().into(),
23        Err(e) => e.write_errors().into(),
24    }
25}