handle-error

Crates.iohandle-error
lib.rshandle-error
version0.1.2
sourcesrc
created_at2020-04-09 00:07:40.312695
updated_at2020-04-15 05:59:33.36608
descriptionAn error handling helper macro to avoid the constant if let Err(e) pattern
homepage
repositoryhttps://github.com/ryankurte/rust-handle-error
max_upload_size
id227787
size6,372
ryan (ryankurte)

documentation

README

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(())
}
Commit count: 7

cargo fmt