futures_macro_await

Macro await

Source
macro_rules! await {
    ($e:expr) => { ... };
}
Expand description

Await a sub-future inside an #[async] function.

You should pass an object implementing [Future] or [StableFuture] to this macro, it will implicitly yield while that future returns [Async::Pending] and evaluate to a Result containing the result of that future once complete.

§Examples

#![feature(proc_macro, generators, pin)]
extern crate futures;

use futures::prelude::*;
use futures::future;
use futures::stable::block_on_stable;

#[async]
fn probably_one() -> Result<u32, u32> {
    let one = await!(future::ok::<u32, u32>(1))?;
    Ok(one)
}

assert_eq!(Ok(1), block_on_stable(probably_one()));