1
2
3
4
5
6
7
8
9
10
11
12
13
use proc_macro::TokenStream as RawTokenStream;
use syn::{parse_macro_input, DeriveInput};

pub(crate) mod kwargs;

#[proc_macro_derive(MacroKeywordArgs, attributes(kwarg))]
pub fn derive_keyword_args(input: RawTokenStream) -> RawTokenStream {
    let input = parse_macro_input!(input as DeriveInput);
    match self::kwargs::run_derive(&input) {
        Ok(res) => res.into(),
        Err(e) => e.into_compile_error().into(),
    }
}