timer_macro 0.1.0

A macro to print time taken to execute a function
Documentation
extern crate proc_macro;

use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, ItemFn};


#[proc_macro_attribute]
pub fn timer(_attr: TokenStream, item: TokenStream) -> TokenStream {
    let input = parse_macro_input!(item as ItemFn);
    let attrs = input.attrs; 
    let vis = input.vis; 
    let sig = input.sig; 
    let fn_name = sig.ident.to_string(); 
    let inputs = sig.inputs.clone(); 
    let output = sig.output.clone(); 
    let block = input.block; 

    // Generate the wrapped function
    let result = quote! {
        #(#attrs)* #vis #sig {
            let start = std::time::Instant::now();
            let result = (|| #block)();
            let duration = start.elapsed();
            println!("{} => Execution time: {:?}", #fn_name, duration);
            result
        }
    };

    // Return the generated function
    result.into()
}