ms-timing 0.1.0

上帝工具箱-宏
Documentation
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, ItemFn};

#[proc_macro_attribute]
pub fn time_measure(_attr: TokenStream, item: TokenStream) -> TokenStream {
    let input = parse_macro_input!(item as ItemFn);
    let fn_sig = &input.sig;      // 函数签名(如 `fn foo()`)
    let fn_name = &input.sig.ident; // 函数名(如 `foo`)
    let fn_block = &input.block;   // 函数体

    quote! {
        #fn_sig {
            let start = std::time::Instant::now();
            #fn_block
            let duration = start.elapsed();
            println!(
                "Function `{}` took {:?}",
                stringify!(#fn_name),  // 打印函数名
                duration
            );
        }
    }.into()
}