diff --git a/src/macros.rs b/src/macros.rs index 0238404..8d463ee 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -9,72 +9,6 @@ macro_rules! as_item { ($i:item) => {$i}; } -/// Creates an enum where each variant contains a `Future`. The created enum impls `Future`. -/// Useful when a fn needs to return possibly many different types of futures. -#[macro_export] -macro_rules! future_enum { - { - $(#[$attr:meta])* - pub enum $name:ident<$($tp:ident),*> { - $(#[$attrv:meta])* - $($variant:ident($inner:ty)),* - } - } => { - future_enum! { - $(#[$attr:meta])* - (pub) enum $name<$($tp),*> { - $(#[$attrv])* - $($variant($inner)),* - } - } - }; - { - $(#[$attr:meta])* - enum $name:ident<$($tp:ident),*> { - $(#[$attrv:meta])* - $($variant:ident($inner:ty)),* - } - } => { - future_enum! { - $(#[$attr:meta])* - () enum $name<$($tp),*> { - $(#[$attrv])* - $($variant($inner)),* - } - } - }; - { - $(#[$attr:meta])* - ($($vis:tt)*) enum $name:ident<$($tp:ident),*> { - $(#[$attrv:meta])* - $($variant:ident($inner:ty)),* - } - } => { - $(#[$attr])* - as_item! { - $($vis)* enum $name<$($tp),*> { - $(#[$attrv])* - $($variant($inner)),* - } - } - - #[allow(non_camel_case_types)] - impl<__future_enum_T, __future_enum_E, $($tp),*> $crate::futures::Future for $name<$($tp),*> - where __future_enum_T: Send + 'static, - $($inner: $crate::futures::Future),* - { - type Item = __future_enum_T; - type Error = __future_enum_E; - - fn poll(&mut self) -> $crate::futures::Poll { - match *self { - $($name::$variant(ref mut f) => $crate::futures::Future::poll(f)),* - } - } - } - } -} - #[doc(hidden)] #[macro_export] macro_rules! impl_serialize {