1use proc_macro::TokenStream;
2use quote::quote;
3use syn::{parse_macro_input, ItemFn};
4
5#[proc_macro_attribute]
6pub fn time_measure(_attr: TokenStream, item: TokenStream) -> TokenStream {
7 let input = parse_macro_input!(item as ItemFn);
8 let fn_sig = &input.sig; let fn_name = &input.sig.ident; let fn_block = &input.block; quote! {
13 #fn_sig {
14 let start = std::time::Instant::now();
15 #fn_block
16 let duration = start.elapsed();
17 println!(
18 "Function `{}` took {:?}",
19 stringify!(#fn_name), duration
21 );
22 }
23 }.into()
24}