Crate tokio_anon_pipe[][src]

Expand description

Asynchronous anonymous pipe for Windows.

inspired by https://github.com/rust-lang/rust/blob/456a03227e3c81a51631f87ec80cac301e5fa6d7/library/std/src/sys/windows/pipe.rs#L48

Note that we specifically do not use CreatePipe here because unfortunately the anonymous pipes returned do not support overlapped operations. Instead, we create a “hopefully unique” name and create a named pipe which has overlapped operations enabled.

Supported platform

x86_64-pc-windows-msvc only

Example

use tokio::io::{AsyncReadExt, AsyncWriteExt};

#[tokio::main(flavor = "current_thread")]
async fn main() -> anyhow::Result<()> {
    let (mut r, mut w) = tokio_anon_pipe::anon_pipe().await?;

    w.write_all(b"HELLO, WORLD!").await?;

    let mut buf = [0; 16];
    let len = r.read(&mut buf[..]).await?;

    assert_eq!(&buf[..len], &b"HELLO, WORLD!"[..]);
    Ok(())
}

Structs

Represents connectability.

Enums

Asyncronous Pipe Read.

Asyncronous Pipe Write.

Functions

Open Anonynous Pipe Pair. Pair is connected.

Open Anonynous Pipe Pair. Pair is not connected yet.

Open Anonynous Pipe Pair Pair is not connected yet.