macro_rules! callback { ( @capture<$tcx:lifetime $(,)? $($lft:lifetime),*> { $($name:ident: $type:ty),* $(,)? } @unblock = |$this:ident| $unblock:block ) => { ... }; ( @capture<$tcx:lifetime $(,)? $($lft:lifetime),*> { $($name:ident: $type:ty),* $(,)? } @unblock = |$this:ident| $unblock:block @timeout = |$this_timeout:ident| $timeout:block ) => { ... }; }