standard_lib/fs/file/
access.rs1use libc::{O_RDONLY, O_RDWR, O_WRONLY, c_int};
2
3mod sealed {
4 pub trait Sealed {
5 const FLAGS: libc::c_int;
6 }
7}
8
9use sealed::Sealed;
10
11pub trait AccessMode: Sealed {}
12
13pub trait Read: AccessMode {}
14
15pub trait Write: AccessMode {}
16
17pub enum ReadOnly {}
18impl Sealed for ReadOnly {
19 const FLAGS: c_int = O_RDONLY;
20}
21impl AccessMode for ReadOnly {}
22impl Read for ReadOnly {}
23
24pub enum WriteOnly {}
25impl Sealed for WriteOnly {
26 const FLAGS: c_int = O_WRONLY;
27}
28impl AccessMode for WriteOnly {}
29impl Write for WriteOnly {}
30
31pub enum ReadWrite {}
32impl Sealed for ReadWrite {
33 const FLAGS: c_int = O_RDWR;
34}
35impl AccessMode for ReadWrite {}
36impl Read for ReadWrite {}
37impl Write for ReadWrite {}