1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#[macro_use]
extern crate proc_macro_hack;

proc_macro_expr_impl! {
    pub fn internal_array_impl(input: &str) -> String {
        let mut parts = input.splitn(2, ' ');
        let count = parts.next().unwrap().parse().unwrap();
        let expression = parts.next().unwrap();
        let mut output = format!("{{let mut __internal_callback = {}; [", expression);
        for i in 0..count {
            output += &format!("__internal_callback({}),", i);
        }
        output + "]}"
    }
}