mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-25 00:00:18 +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.
23 lines
403 B
Rust
23 lines
403 B
Rust
extern crate tokio_channel;
|
|
extern crate futures;
|
|
|
|
|
|
use tokio_channel::mpsc::*;
|
|
use futures::prelude::*;
|
|
use std::thread;
|
|
|
|
#[test]
|
|
fn smoke() {
|
|
let (mut sender, receiver) = channel(1);
|
|
|
|
let t = thread::spawn(move ||{
|
|
while let Ok(s) = sender.send(42).wait() {
|
|
sender = s;
|
|
}
|
|
});
|
|
|
|
receiver.take(3).for_each(|_| Ok(())).wait().unwrap();
|
|
|
|
t.join().unwrap()
|
|
}
|