4个版本 (2个重大变更)

0.3.0 2021年10月31日
0.2.2 2021年10月29日
0.2.1 2021年10月29日
0.2.0 2021年10月29日
0.1.0 2021年10月28日

#2303 in Rust模式

MIT 许可证

4KB

unwrap_helpers

提供清理代码和改进生产的解包宏。这包括对 https://github.com/Mrp1Dev/loop_unwrap 的 pub use,以获取解包循环宏的访问权限。

https://crates.io/crates/unwrap_helpers Docs

/// 与 .unwrap 类似,如果是 Err(_) 或 None,则调用 return。/// 可能返回无数据或数据。可以使用返回父函数返回类型的闭包或函数。

示例

fn ret_test_fail() -> i32 {
    let opt = None;

    let _ = unwrap_or_return!(opt, 0);

    1
}
fn ret_as_option_fail() -> Option<i32> {
    let opt = None;

    let _ = unwrap_or_return!(opt, Some(0));

    None
}
fn test_send(x: i32) -> i32 {
    x + 1
}

fn ret_fn_fail() -> i32 {
    let x = 5;
    let opt = None;

    let _ = unwrap_or_return!(opt, test_send(x));

    1
}
fn ret_closure_fail() -> i32 {
    let x = 5;
    let opt = None;

    let _ = unwrap_or_return!(opt, || x + 1);

    1
}
fn ret_closure_ret_fail() -> i32 {
    let x = 5;
    let opt = None;

    let _ = unwrap_or_return!(opt, || -> i32 { x + 1 });

    1
}
fn ret_closure_ret_fail_insert() -> i32 {
    let x = 5;
    let opt = None;

    let _ = unwrap_or_return!(opt, |x1| x1 + 1, x);

    1
}
fn test_no_return() {
    let input = Option::None;
    let parsed_input = unwrap_or_return!(input);
}

依赖项

~1.5MB
~35K SLoC