Skip to content

Commit

Permalink
Add From<u8> for ExitCode
Browse files Browse the repository at this point in the history
This should cover a mostly cross-platform subset of supported exit codes.
  • Loading branch information
yaahc authored and dtolnay committed Feb 6, 2022
1 parent f624427 commit cf4ac6b
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 0 deletions.
8 changes: 8 additions & 0 deletions library/std/src/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1691,6 +1691,14 @@ impl ExitCode {
}
}

#[unstable(feature = "process_exitcode_placeholder", issue = "48711")]
impl From<u8> for ExitCode {
/// Construct an exit code from an arbitrary u8 value.
fn from(code: u8) -> Self {
ExitCode(imp::ExitCode::from(code))
}
}

impl Child {
/// Forces the child process to exit. If the child has already exited, an [`InvalidInput`]
/// error is returned.
Expand Down
6 changes: 6 additions & 0 deletions library/std/src/sys/unix/process/process_common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -476,6 +476,12 @@ impl ExitCode {
}
}

impl From<u8> for ExitCode {
fn from(code: u8) -> Self {
Self(code)
}
}

pub struct CommandArgs<'a> {
iter: crate::slice::Iter<'a, CString>,
}
Expand Down
9 changes: 9 additions & 0 deletions library/std/src/sys/unsupported/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,15 @@ impl ExitCode {
}
}

impl From<u8> for ExitCode {
fn from(code: u8) -> Self {
match code {
0 => Self::SUCCESS,
1..255 => Self::FAILURE,
}
}
}

pub struct Process(!);

impl Process {
Expand Down
6 changes: 6 additions & 0 deletions library/std/src/sys/windows/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -666,6 +666,12 @@ impl ExitCode {
}
}

impl From<u8> for ExitCode {
fn from(code: u8) -> Self {
ExitCode(c::DWORD::from(code))
}
}

fn zeroed_startupinfo() -> c::STARTUPINFO {
c::STARTUPINFO {
cb: 0,
Expand Down

0 comments on commit cf4ac6b

Please sign in to comment.