[−][src]Crate 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:
#![feature(async_await)] #![feature(await_macro)] #![feature(futures_api)] use std::time::{Duration, Instant}; use tokio::timer::Delay; use back_to_the_future::{futures_await, BoxIntoFutures}; fn main() { let f = async { // Await an old futures::Future using the futures_await! macro. // This macro wraps the future in an adapter behind the scenes. futures_await!(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.box_into_futures()); }
Modules
futures_future | Provides the |
std_future | Provides the |
Macros
futures_await | Await a futures::Future by first wrapping it in an std::future::Future adapter. |
Traits
BoxIntoFutures | Conversion of any non-futures future into |
IntoFutures | Conversion of non-futures future into |
IntoStdFuture | Conversion of non-std futures into |