#channel #reader #byte #read #reader-writer #helper #flume

channel_io

字节数据通道上的读取器实现

3 个版本

0.1.3 2021 年 10 月 15 日
0.1.2 2021 年 10 月 15 日
0.1.1 2021 年 10 月 15 日

#880并发

Unlicense/MIT

11KB
153

📖 channel_io

Build Status license Version info

一个小型的辅助库,用于将 flume 通道中的 Bytes 转换为实现了 {Read,Write}Channel{Reader,Writer}

示例

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);
}

为什么选择 flume?

目标是连接一个异步读取器(在这种情况下是 Glommio 中的 DmaStreamReader)到一个同步读取器。

为什么选择 bytes?

我喜欢它的 API,理论上,根据调用者如何处理数据块,同步发送方的内存可以被重用。

依赖项

~390KB