1 unstable release
0.1.1 | Jan 8, 2021 |
---|---|
0.1.0 |
|
#12 in #panics
22 downloads per month
10KB
93 lines
Utilities for reporting fatal errors and exiting with an error code.
The behavior in this crate is different than the one in panic!
-based exits,
in that the ones here are suited for display to end-users, i.e. no "thread main
panicked at", no backtrace mentions, etc.
Usage
For unwrapping Result
s:
- Use
expect
/expect_fatal
to report the error with context. - Use
unwrap_message!
toexpect
with formatting. - Use
unwrap_format!
to have more control over the message's format. - Use
unwrap
/unwrap_fatal
to report the error when context is provided/obvious.
For aborting:
(Pseudo-)Example:
use fatal::UnwrapExt;
const DB_CONSTR_VAR: &str = "DB_CONNECTION_STRING";
fn main() {
println!("Connecting..");
let constr: String = fatal::unwrap_message!(std::env::var(DB_CONSTR_VAR), "failed to read the `{}` environment variable", DB_CONSTR_VAR);
// when doesn't exist, will print: "Error: failed to read the `DB_CONNECTION_STRING` environment variable (environment variable not found)"
let db: Database = Database::connect(&constr).expect_fatal("failed to connect to database");
// would also include the actual error as above.
println!("Querying total users..");
println!("Total users: {}", db.query_total_users().unwrap_fatal());
}
Dependencies
~0–6.5MB
~35K SLoC