4 releases
0.2.17 | Mar 7, 2024 |
---|---|
0.2.15 | Jul 31, 2023 |
0.2.3 |
|
#208 in Asynchronous
3,681 downloads per month
Used in sitemapo
18KB
374 lines
countio
Also check out other spire-rs
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.
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–1.1MB
~19K SLoC