die-exit

GitHub GitHub Workflow Status Latest Version Documentation

[die-exit] is a simple Rust library to make it easy to handle errors and exit in command line programs. It is forked from the [die] library, but includes an additional test feature which will replace exit behaviour with a call to panic! in order to facilitate testing.

Cargo.toml

```toml [dependencies] die-exit = "0.3"

[dev-dependencies.die-exit] version = "0.3" features = ["test"] ```

Example usage:

``rust use die_exit::*; // Result: Ok(1).die("no number"); // unwraps to 1 successfully Err("failure").die("strange error"); // printsstrange error` to stderr then exits with code 1

// Option: Some(1).die("no number"); // unwraps to 1 successfully None.die("none option"); // prints none option to stderr then exits with code 1

// custom error codes: Err("failure").diecode("strange error", 4); // prints strange error to stderr then exits with code 4 None.diecode("none option", 5); // prints none option to stderr then exits with code 5

// die! macro: die!("argument to -e must be numeric"); // prints message to stderr then exits with code 1 die!(2; "argument to -e must be numeric"); // prints message to stderr then exits with code 2 die!("argument to -e must be numeric"; 3); // prints message to stderr then exits with code 3 die!("argument {} must be {}", "-e", 1; 4); // prints argument -e must be 1 to stderr then exits with code 4 die!("argument {} must be {}", "-e", 1); // prints argument -e must be 1 to stderr then exits with code 1 die!(2); // prints nothing, only exits with code 3 die!(); // prints nothing, only exits with code 1 ```

Example testing:

Ensure that the test feature is turned on. ```rust

[cfg(test)]

mod tests { use super::; use die_exit::;

#[test]
#[should_panic]
fn die_test() {
    die!("Die works in tests!"; exit_codes::COMPILER_ERROR);
}

} ```

cargo Features

License

This project is licensed under the MIT license (LICENSE-MIT http://opensource.org/licenses/MIT)