#![crate_type = "proc-macro"]
extern crate proc_macro;
extern crate quote;
extern crate syn;
pub(crate) mod ast;
#[allow(dead_code)]
pub(crate) mod attrs;
pub(crate) mod impls;
pub(crate) mod utils;
use proc_macro::TokenStream;
use syn::{DeriveInput, parse_macro_input};
#[proc_macro_derive(Configuration, attributes(config))]
pub fn configuration(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
let res = impls::impl_config(&input);
res.into()
}
#[proc_macro_derive(Keyed, attributes(keys))]
pub fn keyed(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
let res = impls::impl_keys(&input);
res.into()
}