Skip to content

Commit d15cee5

Browse files
committed
Refactor: Make AcessMode an enum`
Signed-off-by: Jiahao XU <[email protected]>
1 parent 6c755a3 commit d15cee5

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

library/std/src/sys/anonymous_pipe/unix.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ impl TryFrom<OwnedFd> for PipeReader {
7777
fn try_from(owned_fd: OwnedFd) -> Result<Self, Self::Error> {
7878
convert_to_pipe(owned_fd)
7979
.and_then(|pipe| {
80-
if pipe.as_file_desc().get_access_mode()?.readable {
80+
if pipe.as_file_desc().get_access_mode()?.is_readable() {
8181
Ok(pipe)
8282
} else {
8383
Err(io::Error::new(
@@ -97,7 +97,7 @@ impl TryFrom<OwnedFd> for PipeWriter {
9797
fn try_from(owned_fd: OwnedFd) -> Result<Self, Self::Error> {
9898
convert_to_pipe(owned_fd)
9999
.and_then(|pipe| {
100-
if pipe.as_file_desc().get_access_mode()?.writable {
100+
if pipe.as_file_desc().get_access_mode()?.is_writable() {
101101
Ok(pipe)
102102
} else {
103103
Err(io::Error::new(

library/std/src/sys/pal/unix/fd.rs

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,22 @@ use libc::off64_t;
2626
)))]
2727
use libc::off_t as off64_t;
2828

29-
pub struct AccessMode {
30-
pub readable: bool,
31-
pub writable: bool,
29+
#[derive(Copy, Clone)]
30+
pub enum AccessMode {
31+
ReadOnly,
32+
WriteOnly,
33+
ReadWrite,
34+
None,
35+
}
36+
37+
impl AccessMode {
38+
pub fn is_readable(self) -> bool {
39+
matches!(self, AccessMode::ReadOnly | AccessMode::ReadWrite)
40+
}
41+
42+
pub fn is_writable(self) -> bool {
43+
matches!(self, AccessMode::WriteOnly | AccessMode::ReadWrite)
44+
}
3245
}
3346

3447
#[derive(Debug)]
@@ -529,9 +542,12 @@ impl FileDesc {
529542

530543
pub fn get_access_mode(&self) -> io::Result<AccessMode> {
531544
let access_mode = self.get_flags()? & libc::O_ACCMODE;
532-
Ok(AccessMode {
533-
readable: access_mode == libc::O_RDWR || access_mode == libc::O_RDONLY,
534-
writable: access_mode == libc::O_RDWR || access_mode == libc::O_WRONLY,
545+
Ok(match access_mode {
546+
libc::O_RDWR => AccessMode::ReadWrite,
547+
libc::O_RDONLY => AccessMode::ReadOnly,
548+
libc::O_WRONLY => AccessMode::WriteOnly,
549+
550+
_ => AccessMode::None,
535551
})
536552
}
537553

0 commit comments

Comments
 (0)