[−][src]Function piper::pipe
pub fn pipe(cap: usize) -> (Reader, Writer)
Creates a bounded single-producer single-consumer pipe.
A pipe is a ring buffer of cap bytes that implements traits AsyncRead and AsyncWrite.
When the sender is dropped, remaining bytes in the pipe can still be read. After that, attempts
to read will result in Ok(0), i.e. they will always 'successfully' read 0 bytes.
When the receiver is dropped, the pipe is closed and no more bytes and be written into it.
Further writes will result in Ok(0), i.e. they will always 'successfully' write 0 bytes.
Panics
If the capacity is 0, a panic will be thrown.
Examples
use futures::prelude::*; // Write a message into the pipe. let (mut r, mut w) = piper::pipe(1024); w.write_all(b"hello").await?; // Close the pipe so that the read below doesn't run forever. drop(w); // Read the message. let mut msg = String::new(); r.read_to_string(&mut msg).await?; assert_eq!(msg, "hello");