kermit-derive 0.0.1

Kermit derive macros
Documentation
use {
    proc_macro::TokenStream,
    quote::quote,
    syn::{parse_macro_input, DeriveInput},
};

#[proc_macro_derive(IntoTrieIter)]
pub fn derive_into_trie_iter(input: TokenStream) -> TokenStream {
    let input = parse_macro_input!(input as DeriveInput);
    let ident = &input.ident;

    let output = quote! {

        impl<'a, KT> IntoIterator for #ident<'a, KT>
        where
            KT: KeyType
        {
            type Item = Vec<&'a KT>;
            type IntoIter = TrieIteratorWrapper<'a, Self>;

            fn into_iter(self) -> Self::IntoIter {
                TrieIteratorWrapper::new(self)
            }
        }

    };

    output.into()
}