Rust的标准库支持直接IO文件访问吗?

Fal*_*len 4 io buffer rust

有没有办法O_DIRECT用 Rust 的标准库指定,还是需要使用libc

She*_*ter 5

您可以使用Unix 特定的扩展特征os::unix::fs::OpenOptionsExt

use std::{fs::OpenOptions, os::unix::fs::OpenOptionsExt};

const O_DIRECT: i32 = 0o0040000; // Double check value

fn main() {
    OpenOptions::new()
        .read(true)
        .custom_flags(O_DIRECT)
        .open("/etc/passwd")
        .expect("Can't open");
}
Run Code Online (Sandbox Code Playgroud)

然而,的值O_DIRECT是特定于平台的。我可能最终会使用 libc 来提供该值。