use futures::Future;
#[macro_export]
macro_rules! fry {
($res:expr) => {
match $res {
Ok(elt) => elt,
Err(e) => {
use $crate::utils::FutureExt;
return ::futures::future::err(From::from(e)).into_box();
}
}
};
}
#[macro_export]
macro_rules! ok {
($elt:expr) => {{
use $crate::utils::FutureExt;
::futures::future::ok($elt).into_box()
}};
}
#[macro_export]
macro_rules! err {
($elt:expr) => {{
use $crate::utils::FutureExt;
::futures::future::err(From::from($elt)).into_box()
}};
}
pub trait FutureExt: Future + Sized {
fn into_box(self) -> Box<Future<Item = Self::Item, Error = Self::Error>>;
}
impl<F: Future + 'static> FutureExt for F {
fn into_box(self) -> Box<Future<Item = Self::Item, Error = Self::Error>> {
Box::new(self)
}
}