handle-error 0.1.2

An error handling helper macro to avoid the constant if let Err(e) pattern
Documentation

handle-error

An error handling / bubbling macro to reduce rust error handling boilerplate where ? doesn't work because the site of the error matters.

GitHub tag Travis Build Status Crates.io Docs.rs

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(())
}