#数据流 #buf-reader #字节流 #反向 #顺序 #读取 #IO

rev_buf_reader

一个提供能够按反向顺序读取数据流中的字节块缓冲读取器的crate。它的实现是从nightly std::io的BufReader中改编的副本。

4个版本 (2个破坏性更新)

0.3.0 2022年1月31日
0.2.0 2020年2月1日
0.1.1 2019年5月12日
0.1.0 2019年3月14日

#964算法

Download history 317/week @ 2024-03-14 830/week @ 2024-03-21 1148/week @ 2024-03-28 985/week @ 2024-04-04 780/week @ 2024-04-11 900/week @ 2024-04-18 333/week @ 2024-04-25 392/week @ 2024-05-02 658/week @ 2024-05-09 856/week @ 2024-05-16 837/week @ 2024-05-23 1841/week @ 2024-05-30 1297/week @ 2024-06-06 2367/week @ 2024-06-13 1946/week @ 2024-06-20 1682/week @ 2024-06-27

每月7,654 次下载
用于 9 个crate (8个直接使用)

Apache-2.0 OR MIT

33KB
475

rev_buf_reader

GitHub Actions Workflow docs license Crates.io

这个Rust crate提供了一种能够按反向顺序读取数据流中的字节块缓冲读取器。它的实现是从nightly std::io的BufReader中改编的副本。

用法

按反向顺序读取字节块

extern crate rev_buf_reader;

use rev_buf_reader::RevBufReader;
use std::io::{self, Read};

let data = [0, 1, 2, 3, 4, 5, 6, 7];
let inner = io::Cursor::new(&data);
let mut reader = RevBufReader::new(inner);

let mut buffer = [0, 0, 0];
assert_eq!(reader.read(&mut buffer).ok(), Some(3));
assert_eq!(buffer, [5, 6, 7]);

let mut buffer = [0, 0, 0, 0, 0];
assert_eq!(reader.read(&mut buffer).ok(), Some(5));
assert_eq!(buffer, [0, 1, 2, 3, 4]);

按反向顺序读取文本行

extern crate rev_buf_reader;

use rev_buf_reader::RevBufReader;
use std::io::{self, BufRead};

let data = "This\nis\na sentence";
let inner = io::Cursor::new(&data);
let reader = RevBufReader::new(inner);
let mut lines = reader.lines();

assert_eq!(lines.next().unwrap().unwrap(), "a sentence".to_string());
assert_eq!(lines.next().unwrap().unwrap(), "is".to_string());
assert_eq!(lines.next().unwrap().unwrap(), "This".to_string());
assert!(lines.next().is_none());

功能

rev_buf_reader有一个功能:read_initializer,它对应于nightly Rust的一个实验性功能。如果你在项目中使用它,通过添加#![feature(read_initializer)],你还需要在Cargo.toml中为rev_buf_reader启用它。

依赖关系

~170–315KB