I'm wondering, how to match by a macro? Something like this:
macro_rules! call_this_closure {
    ($closure:???) => {
        let x = 0;
        $closure(x);
    };
}
fn main() {
    call_this_closure!(|x|println!("{}", x));
}
I found Creating environment for closure in a macro in Rust but it uses the trick to transform the macro in a tt so it cannot have arguments: (|| 5 + x). In my case, I want the macro to have arguments.
I know it can be solved with a generic function like this:
pub fn call_this_closure<F, A, R>(&mut self, f: F) -> R
    where F: Fn(&mut A) -> R {
    //...
}
but I actually need a closure in my problem.