| Crates.io | channel_io |
| lib.rs | channel_io |
| version | 0.1.3 |
| created_at | 2021-10-15 21:41:46.754855+00 |
| updated_at | 2021-10-15 23:43:06.131053+00 |
| description | Reader implementation on channel of bytes |
| homepage | https://github.com/sstadick/channel_io |
| repository | https://github.com/sstadick/channel_io |
| max_upload_size | |
| id | 465646 |
| size | 13,321 |
A small helper library to convert a flume channel of Bytes into a Channel{Reader,Writer} that implements {Read,Write}.
use std::io::Read;
use bytes::Bytes;
use channel_reader::ChannelReader;
use flume::bounded;
fn main() {
let (tx, rx) = bounded(10);
let sender_thread = std::thread::spawn(move || {
for i in 0..10 {
let buffer = Bytes::from(vec![i; 10]);
tx.send(buffer).unwrap();
}
});
sender_thread.join().unwrap();
let mut reader = ChannelReader::new(rx);
let mut buffer = vec![];
reader.read_to_end(&mut buffer).unwrap();
assert_eq!(buffer.len(), 100);
}
The goal is to bridge an async reader-like-thing (in this case a DmaStreamReader in Glommio) into a synchronous reader.
I like the API, and in theory as chunks are dropped on the sync side of the sender depending on how the caller is doing things the memory can be reused.