raspberry_macros 0.1.0

Macros for raspberry app
Documentation
use proc_macro::TokenStream;
use syn::{
    parse_macro_input,
    ItemStruct,
    LitInt,
};

#[proc_macro_attribute]
pub fn ratelimit(limit: TokenStream, item: TokenStream) -> TokenStream {
    let limit2 = parse_macro_input!(limit as LitInt);
    let item2 = item.to_owned();
    let name = parse_macro_input!(item2 as ItemStruct);
    let nom = name.ident;
    let impl_ = quote::quote! {
        impl #nom  {
            pub fn limit() -> u32 {
                #limit2
            }
        }
    };
    let mut item: proc_macro2::TokenStream = item.into();
    item.extend(impl_);
    item.into()
}