1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
extern crate proc_macro;
use proc_macro::TokenStream;

#[proc_macro_attribute]
pub fn replify(_attr: TokenStream, input: TokenStream) -> TokenStream {
    let mut code = String::new();
    let mut last_char = ' ';
    let mut times = 0;
    for i in input.to_string().chars() {
        if last_char == '(' && times == 0 {
            code.push_str("_data: std::collections::HashMap<String, std::sync::Arc<dyn std::any::Any>>,");
            times += 1
        };
        code.push(i);
        last_char = i;
    }
    code.parse().unwrap()
}