Crates.io | handle-error |
lib.rs | handle-error |
version | 0.1.2 |
source | src |
created_at | 2020-04-09 00:07:40.312695 |
updated_at | 2020-04-15 05:59:33.36608 |
description | An error handling helper macro to avoid the constant if let Err(e) pattern |
homepage | |
repository | https://github.com/ryankurte/rust-handle-error |
max_upload_size | |
id | 227787 |
size | 6,372 |
An error handling / bubbling macro to reduce rust error handling boilerplate where ?
doesn't work because the site of the error matters.
For a given fallible expression (expression returning a result), such as:
fn do_something() -> Result<(), E> {
// ....
}
This can be used as follows:
#[macro_use]
extern crate log;
#[macro_use]
extern crate handle_error;
fn main() -> Result<(), E> {
let v = handle_error!(do_something(), "Failed to do something");
Ok(())
}
Replacing the common patterns:
#[macro_use]
extern crate log;
// Match case where we care about the ok value
fn example_one() -> Result<(), E> {
let v = match do_something() {
Ok(v) => v,
Err(e) => {
error!("Failed to do something");
return Err(e);
}
};
Ok(())
}
// If let where we do not care about the ok value
fn example_two() -> Result<(), E> {
if let Err(e) = do_something() {
error!("Failed to do something");
return Err(e);
}
Ok(())
}