odirect 0.3.0

Minimal cross-platform direct I/O abstraction for Rust.
Documentation

odirect

Minimal cross-platform direct I/O abstraction for Rust.

Features

  • Linux: O_DIRECT
  • macOS: F_NOCACHE
  • Windows: FILE_FLAG_NO_BUFFERING

Installation

[dependencies]
odirect = "0.3.0"

Usage

use odirect::{open_direct_file, AccessMode};

fn main() {
    let file = open_direct_file(
        "data.bin",
        AccessMode::ReadWrite,
    );

    match file {
        Ok(_) => println!("opened successfully"),
        Err(e) => println!("error: {}", e),
    }
}

Supported Access Modes

AccessMode::Read
AccessMode::Write
AccessMode::ReadWrite

Notes

Direct/unbuffered I/O behavior differs across operating systems.

  • Linux uses O_DIRECT
  • macOS uses F_NOCACHE
  • Windows uses FILE_FLAG_NO_BUFFERING

Some platforms may require aligned buffers and aligned reads/writes when performing direct I/O operations.