mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-09-06 00:00:10 +02:00
This patch adds experimental async/await support to Tokio. It does this by adding feature flags to existing libs only where necessary in order to add nightly specific code (mostly `Unpin` implementations). It then provides a new crate: `tokio-async-await` which is a shim layer on top of `tokio`. The `tokio-async-await` crate is expected to look exactly like `tokio` does, but with async / await support. This strategy reduces the amount of cfg guarding in the main libraries. This patch also adds `tokio-channel`, which is copied from futures-rs 0.1 and adds the necessary `Unpin` implementations. In general, futures 0.1 is mostly unmaintained, so it will make sense for Tokio to take over maintainership of key components regardless of async / await support.
58 lines
1.4 KiB
Markdown
58 lines
1.4 KiB
Markdown
# Tokio async/await preview
|
|
|
|
This crate provides a preview of Tokio with async / await support. It is a shim
|
|
layer on top of `tokio`.
|
|
|
|
**This crate requires Rust nightly and does not provide API stability
|
|
guarantees. You are living on the here.**
|
|
|
|
## Usage
|
|
|
|
To use this crate, you need need to start with a Rust 2018 edition crate.
|
|
|
|
Add this to your `Cargo.toml`:
|
|
|
|
```toml
|
|
# At the very top of the file
|
|
cargo-features = ["edition"]
|
|
|
|
# In the `[packages]` section
|
|
edition = "2018"
|
|
|
|
# In the `[dependencies]` section
|
|
tokio-async-await = "0.1.0"
|
|
```
|
|
|
|
Then, get started. In your application, add:
|
|
|
|
```rust
|
|
// The nightly features that are commonly needed with async / await
|
|
#![feature(await_macro, async_await, futures_api)]
|
|
|
|
// This pulls in the `tokio-async-await` crate. While Rust 2018 doesn't require
|
|
// `extern crate`, we need to pull in the macros.
|
|
#[macro_use]
|
|
extern crate tokio;
|
|
|
|
fn main() {
|
|
// And we are async...
|
|
tokio::run_async(async {
|
|
println!("Hello");
|
|
});
|
|
}
|
|
```
|
|
|
|
Because nightly is required, run the app with `cargo +nightly run`
|
|
|
|
Check the [examples](examples) directory for more.
|
|
|
|
## License
|
|
|
|
This project is licensed under the [MIT license](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.
|