completeio 0.1.0

Completion based IO drivers and async runtime
Documentation
use completeio::net::{UnixListener, UnixStream};
use tempfile::tempdir;

fn main() {
    completeio::task::block_on(async {
        let dir = tempdir().unwrap();
        let path = dir.path().join("unix-example.sock");
        let listener = UnixListener::bind(&path).unwrap();

        let addr = listener.local_addr().unwrap();

        let tx = UnixStream::connect_addr(&addr).unwrap();
        let (rx, _) = listener.accept().await.unwrap();

        assert_eq!(addr, tx.peer_addr().unwrap());

        tx.send_all("Hello world!").await.0.unwrap();

        let buffer = Vec::with_capacity(12);
        let (n, buffer) = rx.recv_exact(buffer).await;
        n.unwrap();
        println!("{}", String::from_utf8(buffer).unwrap());
    });
}