Crates.io | tee_readwrite |
lib.rs | tee_readwrite |
version | 0.2.0 |
source | src |
created_at | 2019-07-30 11:11:06.417277 |
updated_at | 2023-08-16 22:58:18.864701 |
description | Simple TeeReader/TeeWriter types for duplicating reads/writes to std::io::{Read,Write} types |
homepage | |
repository | https://github.com/museun/tee_readwrite |
max_upload_size | |
id | 152887 |
size | 7,639 |
This module allows you to mirror read/writes to another read/write (like POSIX tee)
use tee_readwrite::{TeeReader, TeeWriter};
// make a new reader
let reader = std::io::Cursor::new(vec![1,2,3]);
let mut tee = TeeReader::new(
reader,
vec![], // vec implements write
false // we don't care about flushing here
);
// read all of the elements from the cursor into this vec
// each 'read' call will be written to the wrapped writer
let mut results = vec![];
assert_eq!(tee.read_to_end(&mut results).expect("read"), 3);
// consume the tee, returning the reader and the mirroring writer
let (_read, output) = tee.into_inner();
assert_eq!(results, output);
use tee_readwrite::{TeeReader, TeeWriter};
let writer = vec![];
let mut tee = TeeWriter::new(writer, vec![]);
for i in 1..=3 {
let _ = tee.write_all(&[i]);
}
// we can borrow the output writer
assert_eq!(tee.borrow_output(), &[1,2,3]);
// consume the tee, returning the writer and its tee output
let (left, output) = tee.into_inner();
assert_eq!(left, output);
assert_eq!(output, &[1,2,3]);
License: 0BSD