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 在 算法 中
每月7,654 次下载
用于 9 个crate (8个直接使用)
33KB
475 行
rev_buf_reader
这个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