3 releases
0.1.3 | Oct 15, 2021 |
---|---|
0.1.2 | Oct 15, 2021 |
0.1.1 | Oct 15, 2021 |
#914 in Concurrency
11KB
153 lines
📖 channel_io
A small helper library to convert a flume
channel of Bytes
into a Channel{Reader,Writer}
that implements {Read,Write}
.
Example
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);
}
Why flume?
The goal is to bridge an async reader-like-thing (in this case a DmaStreamReader in Glommio) into a synchronous reader.
Why bytes?
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.
Dependencies
~400KB