#随机访问 #IO #buf-reader #数据访问 #读写器 #缓冲 #结构体

bufreaderwriter

Rust 便利的结构体,用于在单个底层 IO 实例之间自动切换缓冲读取和写入。BufReaderWriterRand 用于随机 IO,BufReaderWriterSeq 用于顺序 IO。

6 个版本

0.2.4 2023 年 5 月 22 日
0.2.3 2023 年 5 月 9 日
0.1.2 2021 年 2 月 24 日
0.1.1 2020 年 12 月 6 日

#302文件系统

Download history 236/week @ 2024-03-13 187/week @ 2024-03-20 203/week @ 2024-03-27 227/week @ 2024-04-03 195/week @ 2024-04-10 192/week @ 2024-04-17 116/week @ 2024-04-24 127/week @ 2024-05-01 112/week @ 2024-05-08 212/week @ 2024-05-15 188/week @ 2024-05-22 289/week @ 2024-05-29 321/week @ 2024-06-05 515/week @ 2024-06-12 203/week @ 2024-06-19 240/week @ 2024-06-26

1,319 每月下载量
3 crates 中使用

MIT/Apache

26KB
478

BufReaderWriter

BufReaderWriterRand<RW>BufReaderWriterSeq<RW> 是便利的结构体,用于在单个底层 IO 实例之间自动切换缓冲读取和写入。 BufReaderWriterRand 用于随机访问 IO(即 Read + Write + Seek,例如 std::fs::File),而 BufReaderWriterSeq 用于顺序 IO(即 Read + Write,例如 std::net::TcpStream)。

这两个结构体根据需要将底层 IO 实例在 BufReader 和 BufWriter 之间移动。然而,当从读取切换到写入时,BufReaderWriterRand 会丢弃任何缓冲数据,并将底层 IO 实例回溯到当前的 BufReader 位置,而 BufReaderWriterSeq 会保存任何缓冲数据,并在后续读取中使其可用。


lib.rs:

BufReaderWriterRand<RW>BufReaderWriterSeq<RW> 是便利的结构体,用于在单个底层 IO 实例之间自动切换缓冲读取和写入。 BufReaderWriterRand 用于随机访问 IO(即 Read + Write + Seek,例如 std::fs::File),而 BufReaderWriterSeq 用于顺序 IO(即 Read + Write,例如 std::net::TcpStream)。

这两个结构体根据需要将底层 IO 实例在 BufReader 和 BufWriter 之间移动。然而,当从读取切换到写入时,BufReaderWriterRand 会丢弃任何缓冲数据,并将底层 IO 实例回溯到当前的 BufReader 位置,而 BufReaderWriterSeq 会保存任何缓冲数据,并在后续读取中使其可用。

示例

use bufreaderwriter::rand::BufReaderWriterRand;
use tempfile::tempfile;

fn main() -> io::Result<()> {
    let mut brw = BufReaderWriterRand::new_writer(tempfile()?);
    let data = "The quick brown fox jumps over the lazy dog".to_owned();
    brw.write(data.as_bytes())?;

    brw.seek(SeekFrom::Start(0))?;
    let mut bin = vec![0; data.len()];
    brw.read(&mut bin)?;
    Ok(())
}

无运行时依赖