8 releases
0.1.6 | Apr 21, 2020 |
---|---|
0.1.5 | Mar 3, 2020 |
0.1.4 | Jan 8, 2020 |
0.1.2 | Dec 24, 2019 |
0.0.0 | Sep 13, 2019 |
#183 in #non-blocking
909 downloads per month
Used in 32 crates
(4 directly)
92KB
955 lines
Tokio Compat
Compatibility layers between tokio
0.2 and legacy versions.
Website | Guides | API Docs | Chat
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 futures_01::future::lazy;
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`...
let when = Instant::now() + Duration::from_millis(20);
tokio_02::timer::delay(when).await;
println!("20 ms have elapsed");
});
License
This project is licensed under the MIT license.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Tokio by you, shall be licensed as MIT, without any additional terms or conditions.
Dependencies
~5MB
~72K SLoC