#non-blocking #io #read #line #object #buffered #reader

lineriver

非阻塞缓冲行读取器,用于 Read 对象

8 个版本 (破坏性)

0.7.1 2024年2月17日
0.7.0 2023年9月6日
0.6.0 2023年9月5日
0.5.0 2023年9月5日
0.1.0 2023年7月22日

#628 in 文件系统


stdecor 中使用

MIT 许可证

17KB
167

CI coveralls crates.io doc.rs

lineriver

lineriver 是一个 Rust crate,提供用于 Read 对象的非阻塞缓冲行读取器。

LineReader 对象类似于 BufReader 对象,它只返回完整的行,但不阻塞。另一方面,LineRead trait 类似于 BufRead trait - 它集中了公共 API,使我们能够创建具有不同底层类型的 LineReader 的无差别集合。

此 crate 与 polling crate 工作得非常好,该 crate 允许我们在多个流(文件、套接字等)中阻塞等待数据可用。它是使用线程和/或 tokio 的替代方案。

有关详细信息,请参阅 LineReader

用法

解释如何使用 LineReader 的最简单方法是使用忙循环示例

use lineriver::{LineReader, LineRead};

let mut linereader = LineReader::new(reader)?;
while !linereader.eof() {
    linereader.read_available()?;
    let lines = linereader.lines_get();
    for line in lines {
        print!("{}", line);
    }
}

依赖关系

~485–770KB
~12K SLoC