#io #async #async-io

merge-io

Merge two separate AsyncRead and AsyncWrite objects into a single I/O stream

5 unstable releases

0.3.0 Dec 13, 2019
0.2.0 Sep 30, 2019
0.1.2 Aug 30, 2019
0.1.1 Aug 3, 2019
0.1.0 Jul 28, 2019

#1001 in Asynchronous

Download history 192/week @ 2023-02-05 138/week @ 2023-02-12 123/week @ 2023-02-19 44/week @ 2023-02-26 101/week @ 2023-03-05 37/week @ 2023-03-12 108/week @ 2023-03-19 72/week @ 2023-03-26 52/week @ 2023-04-02 69/week @ 2023-04-09 60/week @ 2023-04-16 37/week @ 2023-04-23 96/week @ 2023-04-30 100/week @ 2023-05-07 81/week @ 2023-05-14 88/week @ 2023-05-21

365 downloads per month
Used in 2 crates

MIT license

6KB
80 lines

merge-io

Build Status Crates.io Documentation

Merge two separate AsyncRead and AsyncWrite objects into a single I/O stream.

Documentation


lib.rs:

Merge two separate AsyncRead and AsyncWrite objects into a single I/O stream.

Examples

# fn main() -> Result<(), Box<dyn std::error::Error>> {
# futures::executor::block_on(async {
use merge_io::MergeIO;
use futures::io::Cursor;
use futures::{AsyncReadExt, AsyncWriteExt};

// Prepare `reader` to read data from...
let reader = Cursor::new(vec![1, 2, 3, 4]);

// ... and `writer` to read data to.
let writer: Vec<u8> = vec![];

// Merge `reader` and `writer` into a single I/O stream.
let mut stream = MergeIO::new(reader, writer);

// Read data from stream.
let mut read_buf = Vec::<u8>::with_capacity(1024);
stream.read_to_end(&mut read_buf).await?;

// We got what was in the `reader`!
assert_eq!(&read_buf, &[1, 2, 3, 4]);

// Write data to stream.
stream.write_all(&[10, 20, 30, 40]).await?;

// `writer` now contains what we wrote!
assert_eq!(stream.writer(), &[10, 20, 30, 40]);

# Ok(())
# })
# }

Dependencies

~19KB