use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, ItemFn}; // 解析函数

#[proc_macro_attribute]
pub fn my_macro(_attr: TokenStream, item: TokenStream) -> TokenStream {
    // 1. 解析输入（如函数）
    let input = parse_macro_input!(item as ItemFn);

    // 2. 生成新代码
    let expanded = quote! {
        // 在函数执行前后添加日志
        fn #input {
            println!("[LOG] 调用函数 {}", stringify!(#input));
            #input
            println!("[LOG] 函数执行完毕");
        }
    };

    // 3. 返回生成的 TokenStream
    TokenStream::from(expanded)
}

