compio 0.19.0-rc.2

Completion based async runtime
Documentation
use compio::{
    driver::{DriverType, ProactorBuilder},
    net::{TcpListener, TcpStream},
    runtime::Runtime,
};
use compio_runtime::ResumeUnwind;

#[test]
fn accept() {
    let mut proactor_builder = ProactorBuilder::new();
    proactor_builder.driver_type(DriverType::Poll);
    let runtime = Runtime::builder()
        .with_proactor(proactor_builder)
        .build()
        .unwrap();
    runtime.block_on(async {
        let listener = TcpListener::bind("localhost:0").await.unwrap();
        let addr = listener.local_addr().unwrap();
        let task = compio_runtime::spawn(async move {
            let (socket, _) = listener.accept().await.unwrap();
            socket
        });
        let cli = TcpStream::connect(&addr).await.unwrap();
        let srv = task.await.resume_unwind().expect("shouldn't be cancelled");
        assert_eq!(cli.local_addr().unwrap(), srv.peer_addr().unwrap());
    })
}