macro_rules! delegate_all {
(@ trait Future $name : ident < $($arg : ident), * > ($t : ty)
$(where $($bound : tt) *) *) => { ... };
(@ trait FusedFuture $name : ident < $($arg : ident), * > ($t : ty)
$(where $($bound : tt) *) *) => { ... };
(@ trait Stream $name : ident < $($arg : ident), * > ($t : ty)
$(where $($bound : tt) *) *) => { ... };
(@ trait FusedStream $name : ident < $($arg : ident), * > ($t : ty)
$(where $($bound : tt) *) *) => { ... };
(@ trait Sink $name : ident < $($arg : ident), * > ($t : ty)
$(where $($bound : tt) *) *) => { ... };
(@ trait Debug $name : ident < $($arg : ident), * > ($t : ty)
$(where $($bound : tt) *) *) => { ... };
(@ trait AccessInner [$inner : ty, ($($ind : tt) *)] $name : ident <
$($arg : ident), * > ($t : ty) $(where $($bound : tt) *) *) => { ... };
(@ trait New [| $($param : ident : $paramt : ty), * | $cons : expr] $name :
ident < $($arg : ident), * > ($t : ty) $(where $($bound : tt) *) *) => { ... };
($(#[$attr : meta]) * $name : ident < $($arg : ident), * > ($t : ty) : $ftrait
: ident $([$($targs : tt) *]) * $({ $($item : tt) * }) *
$(where $($bound : tt) *) *) => { ... };
($(#[$attr : meta]) * $name : ident < $($arg : ident), * > ($t : ty) : $ftrait
: ident $([$($ftargs : tt) *]) * + $strait : ident $([$($stargs : tt) *]) *
$(+ $trait : ident $([$($targs : tt) *]) *) * $({ $($item : tt) * }) *
$(where $($bound : tt) *) *) => { ... };
}