3个版本
0.1.4 | 2023年11月21日 |
---|---|
0.1.3 | 2023年11月19日 |
0.1.2 | 2023年7月28日 |
0.1.1 |
|
0.1.0 |
|
#3 in #buffering
29 每月下载次数
74KB
1.5K SLoC
exact-read
exact-read
crate是一个IO缓冲库,提供基于预留的缓冲,以实现从文件中高效读取数据。基于预留的缓冲允许在任何时候决定缓冲区大小。这允许对像网络这样的昂贵系统进行最小I/O操作。此外,该crate还支持虚拟连接文件,允许将分离的文件视为一个连续的流进行处理和定位/读取。
从MultiFile
、File
和ExactReader
使用和实现Seek + Read
以来,这些结构体可以单独使用,而无需将它们链接起来。
use std::io::{Cursor, Read};
use exact_reader::{MultiFile, File, ExactReader};
fn into_file(value: Cursor<Vec<u8>>) -> File<Cursor<Vec<u8>>> {
let len = value.get_ref().len();
File {
file: value,
size: len,
filename: "cursor".to_string(),
}
}
fn main() {
let a: Cursor<Vec<u8>> = Cursor::new(vec![1u8, 2, 3]);
let b: Cursor<Vec<u8>> = Cursor::new(vec![4u8, 5, 6]);
let mut multifile = MultiFile::new(vec![into_file(a), into_file(b)]);
let mut reader = ExactReader::new_multi(multifile);
reader.reserve(6);
let mut buf = [0u8; 4];
reader.read(&mut buf).unwrap();
assert_eq!(buf, [1, 2, 3, 4])
}