#error #pattern #err #macro #boilerplate #helper #let

handle-error

一个用于避免持续使用 if let Err(e) 模式的错误处理辅助宏

3 个版本

0.1.2 2020年4月15日
0.1.1 2020年4月9日
0.1.0 2020年4月9日

#2306 in Rust 模式


用于 nexusfetch

MPL-2.0 许可证

7KB
55

handle-error

一个用于错误处理/冒泡的宏,以减少 Rust 错误处理样板代码,其中 ? 无法使用,因为错误的位置很重要。

GitHub tag Travis Build Status Crates.io Docs.rs

对于给定的可能失败的表达式(返回结果的表达式),例如

fn do_something() -> Result<(), E> {
    // ....
}

可以使用以下方式

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

替换常见的模式

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

无运行时依赖