batbox-derive 0.13.0

Batteries useful for projects (derive macros)
Documentation
#![recursion_limit = "128"]
#![allow(unused_imports)]

extern crate proc_macro;

use darling::{FromDeriveInput, FromField};
use proc_macro2::TokenStream;
use quote::quote;

mod diff;
mod has_id;

#[proc_macro_derive(Diff, attributes(diff))]
pub fn derive_diff(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    diff::derive(input.into()).into()
}

#[proc_macro_derive(HasId, attributes(has_id))]
pub fn derive_has_id(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    let input: syn::DeriveInput = syn::parse_macro_input!(input);
    match has_id::DeriveInput::from_derive_input(&input) {
        Ok(input) => input.derive().into(),
        Err(e) => e.write_errors().into(),
    }
}