1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
extern crate proc_macro;

#[proc_macro]
pub fn id(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    eprintln!("id!({})", input);
    input
}

#[proc_macro_attribute]
pub fn id_attr(attr: proc_macro::TokenStream, input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    eprintln!("id_attr!({}, {})", attr, input);
    input
}