Crate expect_exit[][src]

Expand description

Display an error message and exit without a panic.

The expect-exit library defines the Expected, ExpectedWithError, and ExpectedResult traits and implements them for the standard Result and Option types as appropriate. This allows a program to display an error message and exit with a non-zero exit code without invoking a Rust panic, yet optionally unwinding the stack so that various objects may perform some clean-up actions.

The methods with an _e suffix append an appropriate error message to the supplied one. The methods with a _ suffix allow the caller to specify an already-constructed message instead of a function that returns it.

use std::collections::HashMap;
use std::env;

use expect_exit::{Expected, ExpectedWithError};

let mut vars: HashMap<String, String> = ["HOME", "PATH", "LOGNAME"]
    .iter()
    .map(|name| {
        (
            name.to_string(),
            env::var(name).or_exit_e(|| format!("No '{} in the environment", name)),
        )
    })
    .collect();
vars.insert(
    "PWD".to_string(),
    env::current_dir()
        .or_exit_e_("Could not determine the current directory")
        .to_str()
        .or_exit_("Could not represent the path to the current directory")
        .to_string(),
);
println!("{:?}", vars);
if !vars["PWD"].starts_with("/") {
    expect_exit::exit("Expected an absolute path to the current directory");
}

The traits are currently implemented for the standard Option and Result types as appropriate.

For the crate’s change history, see the NEWS.md file in the source distribution.

Structs

ExpectationFailed

The error object returned by the ExpectedResult methods.

Traits

Expected

Unwrap or exit with the specified message.

ExpectedResult

Test the value and return a result object containing either the inner value or an error object that, when displayed, will provide the specified error message.

ExpectedWithError

Unwrap or exit with an appropriate error message.

Functions

die

Display the specified message, then exit without unwinding the stack.

die_perror

Display the specified message and append an appropriate description of the error, then exit without unwinding the stack.

exit

Display the specified message, then unwind the stack and exit.

exit_perror

Display the specified message and append an appropriate description of the error, then unwind the stack and exit.

exit_unwind

Unwind the stack and end the process with the specified exit code.