completeio 0.1.0

Completion based IO drivers and async runtime
Documentation
fn main() {
    #[cfg(target_os = "windows")]
    {
        use completeio::named_pipe::{ClientOptions, ServerOptions};

        const PIPE_NAME: &str = r"\\.\pipe\completeio-named-pipe";

        completeio::task::block_on(async {
            let server = ServerOptions::new()
                .access_inbound(false)
                .create(PIPE_NAME)
                .unwrap();
            let client = ClientOptions::new().write(false).open(PIPE_NAME).unwrap();

            server.connect().await.unwrap();

            let write = server.write_all("Hello world!");
            let buffer = Vec::with_capacity(12);
            let read = client.read_exact(buffer);

            let ((write, _), (read, buffer)) = futures_util::join!(write, read);
            write.unwrap();
            read.unwrap();
            println!("{}", String::from_utf8(buffer).unwrap());
        });
    }
}