Expand description
The wrapper struct to enable byte counting for std::io::Read
and
std::io::Write
and its asynchronous variants from futures
and tokio
crates.
Features
std
to enablestd::io::Read
andstd::io::Write
. Enabled by default.futures
to enablefutures_io::AsyncRead
andfutures_io::AsyncWrite
.tokio
to enabletokio::io::AsyncRead
andtokio::io::AsyncWrite
.
Examples
std::io::Read
:
use std::io::prelude::*;
use std::io::BufReader;
use countio::Counter;
let mut reader = "Hello World!".as_bytes();
let mut reader = Counter::new(&mut reader);
let mut reader = BufReader::new(&mut reader);
let mut buf = String::new();
let len = reader.read_line(&mut buf).unwrap();
assert_eq!(len, reader.get_ref().read_bytes());
std::io::Write
:
use std::io::prelude::*;
use std::io::BufWriter;
use countio::Counter;
let mut writer = Vec::new();
let mut writer = Counter::new(&mut writer);
let mut writer = BufWriter::new(&mut writer);
let buf = "Hello World!".as_bytes();
let len = writer.write(buf).unwrap();
writer.flush().unwrap();
assert_eq!(len, writer.get_ref().written_bytes());
Structs
- Generic reader & writer wrapper with byte counting capability.