Also check out other xwde
projects here.
The wrapper struct to enable byte counting for std::io::Read
,
std::io::Write
, std::io::Seek
and its asynchronous variants from futures
and tokio
crates.
std
to enable std::io::{Read, Write, Seek}
. Enabled by default.futures
to enable futures_io::{AsyncRead, AsyncWrite, AsyncSeek}
.tokio
to enable tokio::io::{AsyncRead, AsyncWrite, AsyncSeek}
.std::io::Read
:```rust use std::io::{BufRead, BufReader}; use countio::Counter;
fn main() { let reader = "Hello World!".as_bytes(); let reader = BufReader::new(reader); let mut reader = Counter::new(reader);
let mut buf = String::new();
let len = reader.read_line(&mut buf).unwrap();
assert_eq!(len, reader.reader_bytes());
} ```
std::io::Write
:```rust use std::io::{BufWriter, Write}; use countio::Counter;
fn main() { let writer = Vec::new(); let writer = BufWriter::new(writer); let mut writer = Counter::new(writer);
let buf = "Hello World!".as_bytes();
let len = writer.write(buf).unwrap();
writer.flush().unwrap();
assert_eq!(len, writer.writer_bytes());
} ```