#async-stream #tokio #line #reverse #stream #async

tokio-rev-lines

此库提供了一种异步流,用于按行读取文件或任何BufReader,并具有反向缓冲。

4个版本

0.2.1 2022年7月12日
0.2.0 2022年7月12日
0.1.1 2022年7月11日
0.1.0 2022年7月11日

8#lines

MIT许可证

12KB
174

tokio-rev-lines

Crate MIT licensed

此库提供了一种异步流,用于按行读取文件或任何BufReader,并具有反向缓冲。

它是rev_lines的异步tokio版本。

文档

文档可在Docs.rs上找到。

示例

use futures_util::{pin_mut, StreamExt};
use tokio::{fs::File, io::BufReader};
use tokio_rev_lines::RevLines;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let file = File::open("tests/multi_line_file").await?;
    let rev_lines = RevLines::new(BufReader::new(file)).await?;
    pin_mut!(rev_lines);

    while let Some(line) = rev_lines.next().await {
        println!("{}", line?);
    }
    
    Ok(())
}

lib.rs:

此库提供了一种异步流,用于按行读取文件或任何BufReader,并具有反向缓冲。

它是rev_lines的异步tokio版本。

示例

use futures_util::{pin_mut, StreamExt};
use tokio::{fs::File, io::BufReader};
use tokio_rev_lines::RevLines;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let file = File::open("tests/multi_line_file").await?;
    let rev_lines = RevLines::new(BufReader::new(file)).await?;
    pin_mut!(rev_lines);

    while let Some(line) = rev_lines.next().await {
        println!("{}", line?);
    }

    Ok(())
}

此方法使用了从uutils/coreutils tail借用的逻辑。

依赖关系

~3–4.5MB
~79K SLoC