diff --git a/src/utils.rs b/src/utils.rs index d80524446..6ae49115d 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -281,7 +281,7 @@ macro_rules! extension_trait { #[cfg(feature = "docs")] #[doc = $doc] pub trait $name { - extension_trait!(@doc () $($body_base)* $($body_ext)*); + extension_trait!(@doc [$($body_base)* $($body_ext)*] -> []); } // When not rendering docs, re-export the base trait from the futures crate. @@ -291,7 +291,7 @@ macro_rules! extension_trait { // The extension trait that adds methods to any type implementing the base trait. #[doc = $doc_ext] pub trait $ext: $name { - extension_trait!(@ext () $($body_ext)*); + extension_trait!(@ext [$($body_ext)*] -> []); } // Blanket implementation of the extension trait for any type implementing the base trait. @@ -302,32 +302,24 @@ macro_rules! extension_trait { }; // Parse the return type in an extension method. - (@doc ($($head:tt)*) -> impl Future $(+ $lt:lifetime)? [$f:ty] $($tail:tt)*) => { - extension_trait!(@doc ($($head)* -> owned::ImplFuture<$out>) $($tail)*); + (@doc [-> impl Future $(+ $lt:lifetime)? [$f:ty] $($tail:tt)*] -> [$($accum:tt)*]) => { + extension_trait!(@doc [$($tail)*] -> [$($accum)* -> owned::ImplFuture<$out>]); }; - (@ext ($($head:tt)*) -> impl Future $(+ $lt:lifetime)? [$f:ty] $($tail:tt)*) => { - extension_trait!(@ext ($($head)* -> $f) $($tail)*); - }; - - // Parse the return type in an extension method. - (@doc ($($head:tt)*) -> impl Future + $lt:lifetime [$f:ty] $($tail:tt)*) => { - extension_trait!(@doc ($($head)* -> borrowed::ImplFuture<$lt, $out>) $($tail)*); - }; - (@ext ($($head:tt)*) -> impl Future + $lt:lifetime [$f:ty] $($tail:tt)*) => { - extension_trait!(@ext ($($head)* -> $f) $($tail)*); + (@ext [-> impl Future $(+ $lt:lifetime)? [$f:ty] $($tail:tt)*] -> [$($accum:tt)*]) => { + extension_trait!(@ext [$($tail)*] -> [$($accum)* -> $f]); }; // Parse a token. - (@doc ($($head:tt)*) $token:tt $($tail:tt)*) => { - extension_trait!(@doc ($($head)* $token) $($tail)*); + (@doc [$token:tt $($tail:tt)*] -> [$($accum:tt)*]) => { + extension_trait!(@doc [$($tail)*] -> [$($accum)* $token]); }; - (@ext ($($head:tt)*) $token:tt $($tail:tt)*) => { - extension_trait!(@ext ($($head)* $token) $($tail)*); + (@ext [$token:tt $($tail:tt)*] -> [$($accum:tt)*]) => { + extension_trait!(@ext [$($tail)*] -> [$($accum)* $token]); }; // Handle the end of the token list. - (@doc ($($head:tt)*)) => { $($head)* }; - (@ext ($($head:tt)*)) => { $($head)* }; + (@doc [] -> [$($accum:tt)*]) => { $($accum)* }; + (@ext [] -> [$($accum:tt)*]) => { $($accum)* }; // Parse imports at the beginning of the macro. ($import:item $($tail:tt)*) => {