[−][src]Crate tokio_compat
Compatibility between tokio
0.2 and legacy versions.
Overview
This crate provides compatibility runtimes that allow running both futures
0.1
futures that use tokio
0.1 runtime services and std::future
futures that
use tokio
0.2 runtime services.
Examples
Spawning both tokio
0.1 and tokio
0.2 futures:
use futures_01::future::lazy; tokio_compat::run(lazy(|| { // spawn a `futures` 0.1 future using the `spawn` function from the // `tokio` 0.1 crate: tokio_01::spawn(lazy(|| { println!("hello from tokio 0.1!"); Ok(()) })); // spawn an `async` block future on the same runtime using `tokio` // 0.2's `spawn`: tokio_02::spawn(async { println!("hello from tokio 0.2!"); }); Ok(()) }))
Futures on the compat runtime can use timer
APIs from both 0.1 and 0.2
versions of tokio
:
use std::time::{Duration, Instant}; use tokio_compat::prelude::*; tokio_compat::run_std(async { // Wait for a `tokio` 0.1 `Delay`... let when = Instant::now() + Duration::from_millis(10); tokio_01::timer::Delay::new(when) // convert the delay future into a `std::future` that we can `await`. .compat() .await .expect("tokio 0.1 timer should work!"); println!("10 ms have elapsed"); // Wait for a `tokio` 0.2 `Delay`... tokio_02::time::delay_for(Duration::from_millis(20)).await; println!("20 ms have elapsed"); });
Feature Flags
rt-current-thread
: enables thecurrent_thread
compatibilty runtimert-full
: enables thecurrent_thread
and threadpool compatibility runtimes (enabled by default)
Modules
prelude | A prelude for |
runtime | feature="rt-current-thread" or feature="rt-full" Runtimes compatible with both |
Functions
run | feature="rt-full" Start the Tokio runtime using the supplied |
run_std | feature="rt-full" Start the Tokio runtime using the supplied |