| Crates.io | data-streams |
| lib.rs | data-streams |
| version | 2.0.0 |
| created_at | 2024-03-10 23:50:04.122228+00 |
| updated_at | 2025-08-03 06:13:37.753569+00 |
| description | Extension traits for reading and writing data with streams. |
| homepage | https://github.com/NightEule5/data-streams/ |
| repository | https://github.com/NightEule5/data-streams/ |
| max_upload_size | |
| id | 1169047 |
| size | 163,534 |
Data Streams provides stream extension traits for reading and writing data with streams.
Add data-streams to your dependencies with cargo add data-streams, or manually in your Cargo.toml:
[dependencies]
data-streams = "2.0.0"
use data_streams::{DataSource, DataSink, Result};
fn read(source: &mut impl DataSource) -> Result<()> {
let int: i32 = source.read_i32()?; // or use generic read_int()
let str: &str = source.read_utf8_to_end(&mut String::default())?;
let bytes: &[u8] = source.read_bytes(&mut [0; 128])?;
}
fn write(source: &mut impl DataSink) -> Result<()> {
source.write_i32(12345)?; // or use generic write_int()
source.write_utf8("something")?;
source.write_bytes(&[1, 2, 3, 4, 5])?;
}
The utf8 feature enables reading UTF-8 bytes, with high-performance validation from the simdutf8
crate.
no_std SupportThis crate supports no_std and environments without alloc. These are toggled by the std and
alloc features respectively. no_std allows use in embedded environments, at the expense of lost
implementations for types that would be provided by std::io. Disabling alloc removes reading
into vectors/strings.