6 releases
0.2.19 | Sep 3, 2024 |
---|---|
0.2.18 | Jun 26, 2024 |
0.2.17 | Mar 7, 2024 |
0.2.15 | Jul 31, 2023 |
0.2.3 |
|
#147 in Asynchronous
4,968 downloads per month
Used in 19 crates
(3 directly)
19KB
385 lines
countio
Check out other spire
projects here.
The wrapper struct to enable byte counting for std::io::{Read, Write, Seek}
and its asynchronous variants from futures
and tokio
crates.
Features
std
to enablestd::io::{Read, Write, Seek}
. Enabled by default.futures
to enablefutures_io::{AsyncRead, AsyncWrite, AsyncSeek}
.tokio
to enabletokio::io::{AsyncRead, AsyncWrite, AsyncSeek}
.
Examples
std::io::Read
:
use std::io::{BufRead, BufReader, Result};
use countio::Counter;
fn main() -> Result<()> {
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)?;
assert_eq!(len, reader.reader_bytes());
Ok(())
}
std::io::Write
:
use std::io::{BufWriter, Write, Result};
use countio::Counter;
fn main() -> Result<()> {
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)?;
writer.flush()?;
assert_eq!(len, writer.writer_bytes());
Ok(())
}
Other crates
Dependencies
~0–5.5MB
~19K SLoC