Struct std::process::ExitStatusError
source · pub struct ExitStatusError(_);
exit_status_error
#84908)Expand description
Describes the result of a process after it has failed
Produced by the .exit_ok
method on ExitStatus
.
Examples
#![feature(exit_status_error)]
use std::process::{Command, ExitStatusError};
fn run(cmd: &str) -> Result<(),ExitStatusError> {
Command::new(cmd).status().unwrap().exit_ok()?;
Ok(())
}
run("true").unwrap();
run("false").unwrap_err();
RunImplementations§
source§impl ExitStatusError
impl ExitStatusError
sourcepub fn code(&self) -> Option<i32>
🔬This is a nightly-only experimental API. (exit_status_error
#84908)
pub fn code(&self) -> Option<i32>
exit_status_error
#84908)Reports the exit code, if applicable, from an ExitStatusError
.
In Unix terms the return value is the exit status: the value passed to exit
, if the
process finished by calling exit
. Note that on Unix the exit status is truncated to 8
bits, and that values that didn’t come from a program’s call to exit
may be invented by the
runtime system (often, for example, 255, 254, 127 or 126).
On Unix, this will return None
if the process was terminated by a signal. If you want to
handle such situations specially, consider using methods from
ExitStatusExt
.
If the process finished by calling exit
with a nonzero value, this will return
that exit status.
If the error was something else, it will return None
.
If the process exited successfully (ie, by calling exit(0)
), there is no
ExitStatusError
. So the return value from ExitStatusError::code()
is always nonzero.
Examples
#![feature(exit_status_error)]
use std::process::Command;
let bad = Command::new("false").status().unwrap().exit_ok().unwrap_err();
assert_eq!(bad.code(), Some(1));
Runsourcepub fn code_nonzero(&self) -> Option<NonZeroI32>
🔬This is a nightly-only experimental API. (exit_status_error
#84908)
pub fn code_nonzero(&self) -> Option<NonZeroI32>
exit_status_error
#84908)Reports the exit code, if applicable, from an ExitStatusError
, as a NonZero
This is exactly like code()
, except that it returns a NonZeroI32
.
Plain code
, returning a plain integer, is provided because it is often more convenient.
The returned value from code()
is indeed also nonzero; use code_nonzero()
when you want
a type-level guarantee of nonzeroness.
Examples
#![feature(exit_status_error)]
use std::num::NonZeroI32;
use std::process::Command;
let bad = Command::new("false").status().unwrap().exit_ok().unwrap_err();
assert_eq!(bad.code_nonzero().unwrap(), NonZeroI32::try_from(1).unwrap());
Runsourcepub fn into_status(&self) -> ExitStatus
🔬This is a nightly-only experimental API. (exit_status_error
#84908)
pub fn into_status(&self) -> ExitStatus
exit_status_error
#84908)Converts an ExitStatusError
(back) to an ExitStatus
.
Trait Implementations§
source§impl Clone for ExitStatusError
impl Clone for ExitStatusError
source§fn clone(&self) -> ExitStatusError
fn clone(&self) -> ExitStatusError
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ExitStatusError
impl Debug for ExitStatusError
source§impl Display for ExitStatusError
impl Display for ExitStatusError
source§impl Error for ExitStatusError
impl Error for ExitStatusError
1.30.0 · source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · source§fn description(&self) -> &str
fn description(&self) -> &str
source§impl ExitStatusExt for ExitStatusError
Available on Unix only.
impl ExitStatusExt for ExitStatusError
source§fn from_raw(raw: i32) -> Self
fn from_raw(raw: i32) -> Self
ExitStatus
or ExitStatusError
from the raw underlying integer status
value from wait
Read more