Crate rabuf

source ·
Expand description

The Buffer for random access file.

When you read and write a file, this read and write in Chunk units and reduce IO operation.

Features

  • random access
  • Chunk units os io operation
  • reduce os io operation
  • support small size access accel.
  • minimum support rustc 1.56.1 (59eed8a2a 2021-11-01)

Examples

Write, Seek, Read

use rabuf::BufFile;
use std::fs::OpenOptions;
use std::io::{Read, Seek, SeekFrom, Write};

std::fs::create_dir_all("target/tmp").unwrap();

let path = "target/tmp/doc_test_1";
let bw = b"ABCEDFG\nhijklmn\n";

let f = OpenOptions::new().create(true)
    .read(true).write(true).open(path).unwrap();
let mut bf = BufFile::new("tes", f).unwrap();
bf.write_all(bw).unwrap();

bf.seek(SeekFrom::Start(0)).unwrap();

let mut br = vec![0u8; bw.len()];
bf.read_exact(&mut br).unwrap();
assert_eq!(&br, bw);

Write, Close, Open, Read

use rabuf::BufFile;
use std::fs::OpenOptions;
use std::io::{Read, Seek, SeekFrom, Write};

std::fs::create_dir_all("target/tmp").unwrap();
let path = "target/tmp/doc_test_2";

let bw = b"abcdefg\nHIJKLMN\n";
{
    let f = OpenOptions::new().create(true)
        .read(true).write(true).open(path).unwrap();
    let mut bf = BufFile::new("tes", f).unwrap();
    bf.write_all(bw).unwrap();
}
{
    let f = OpenOptions::new().create(true)
        .read(true).write(true).open(path).unwrap();
    let mut bf = BufFile::new("tes", f).unwrap();
    let mut br = vec![0u8; bw.len()];
    bf.read_exact(&mut br).unwrap();
    assert_eq!(&br, bw);
}

Re-exports

pub use maybe::MaybeSlice;

Modules

Structs

Generic random access buffer.

Traits

Truncates or extends the underlying file.
File syncronization include OS-internal metadata to disk.
Read small bytes less than chunk size.
Write small bytes less than chunk size.

Functions

Round up power of 2.

Type Definitions

Buffered File for ramdom access.