macro_rules! defer { ($func : expr) => { ... }; ($func : expr, $capt : ident) => { ... }; ($func : expr, $($capt : ident), *) => { ... }; }