Предполагая, что вы находитесь в Unix-подобной системе, вы можете использовать OpenOptionsExt
для установки своих флагов:
use std::fs::OpenOptions;
use std::os::unix::fs::OpenOptionsExt;
let file = OpenOptions::new()
.read(true)
.custom_flags(flags)
.open(&path)?;
Обратите внимание, что вы должны установить флаги режима доступа отдельно(например, позвонив по номеру read
или write
), поэтому, если они вам нужны, вам придется обращаться с ними самостоятельно. Например:
use std::os::unix::fs::OpenOptionsExt;
use libc::{O_RDONLY, O_RDWR, O_WRONLY};
let file = OpenOptions::new()
.custom_flags(flags)
.read((flags & O_ACCMODE == O_RDONLY) || (flags & O_ACCMODE == O_RDWR))
.write((flags & O_ACCMODE == O_WRONLY) || (flags & O_ACCMODE == O_RDWR))
.open(&path)?;