[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.
```toml [dependencies] die-exit = "0.3"
[dev-dependencies.die-exit] version = "0.3" features = ["test"] ```
``rust
use die_exit::*;
// Result:
Ok(1).die("no number"); // unwraps to 1 successfully
Err("failure").die("strange error"); // prints
strange 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
```
Ensure that the test
feature is turned on.
```rust
mod tests { use super::; use die_exit::;
#[test]
#[should_panic]
fn die_test() {
die!("Die works in tests!"; exit_codes::COMPILER_ERROR);
}
} ```
cargo
Featuresdie
might be used.
This will change the behaviour of die
and its variants to call panic!()
instead of process::exit()
.This project is licensed under the MIT license (LICENSE-MIT http://opensource.org/licenses/MIT)