Documentation crates.io Build Status

back-to-the-future

std and futures interoperability

This crate implements adapters for the two different future types: std::future::Future and futures::Future. You can seamlessly convert the one into the other. The aim is to be able to use new async/await syntax with existing futures::Future infrastructure, such as tokio.

Keep in mind that many of the used features are still unstable and only available on nightly with feature gates.

A simple example: ```rust

![feature(async_await)]

![feature(await_macro)]

![feature(futures_api)]

use std::time::{Duration, Instant}; use tokio::timer::Delay;

use backtothefuture::{futuresawait, BoxIntoFutures};

fn main() { let f = async { // Await an old futures::Future using the futuresawait! macro. // This macro wraps the future in an adapter behind the scenes. futuresawait!(Delay::new(Instant::now() + Duration::new(0, 10))).unwrap(); Ok(()) };

// Convert the std::future::Future into a futures::Future so that tokio::run can use it. tokio::run(f.boxintofutures()); } ```