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 |
|
#291 in Parser implementations
26,105 downloads per month
Used in 24 crates
(4 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
stdto enablestd::io::{Read, Write, Seek}. Enabled by default.futuresto enablefutures_io::{AsyncRead, AsyncWrite, AsyncSeek}.tokioto 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–2.9MB
~52K SLoC