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