#error #macro #wrapping #try #wrap #ok #input

try_or_wrap_s

?try! 宏,额外将错误包装在其他东西中

2个不稳定版本

0.2.0 2019年9月4日
0.1.0 2019年9月4日

#1758Rust模式

Download history 431/week @ 2024-03-24 455/week @ 2024-03-31 382/week @ 2024-04-07 424/week @ 2024-04-14 470/week @ 2024-04-21 329/week @ 2024-04-28 235/week @ 2024-05-05 386/week @ 2024-05-12 298/week @ 2024-05-19 362/week @ 2024-05-26 496/week @ 2024-06-02 482/week @ 2024-06-09 453/week @ 2024-06-16 398/week @ 2024-06-23 400/week @ 2024-06-30 373/week @ 2024-07-07

1,637 每月下载量

LGPL-3.0-only

14KB

try_or_wrap

Crates.io License

此crate提供了一个类似于旧 try! 宏或 ? 的宏,但它在其他东西中包装错误。

如果你想在内部错误处理中有一个额外的 Result 级别,而你想轻松返回无效输入错误,但又不能这样做,这很有用。

此宏允许你这样做

fn foo(input: Input) -> Result<Result<FinalOutput, InvalidInputError>, DatabaseError> {
    let validated_input: ValidatedInput = try_or_wrap!(validate_input_with_database(input)?, Ok);
    Ok(Ok(do_stuff_with_validated_input(validated_input)?))
}

fn validate_input_with_database(input: Input) -> Result<Result<ValidatedInput, InvalidInputError>, DatabaseError>;

lib.rs:

此crate提供了一个类似于旧 try! 宏或 ? 的宏,但它在其他东西中包装错误。

如果你想在内部错误处理中有一个额外的 Result 级别,而你想轻松返回无效输入错误,但又不能这样做,这很有用。

此宏允许你这样做

fn foo(input: Input) -> Result<Result<FinalOutput, InvalidInputError>, DatabaseError> {
    let validated_input: ValidatedInput = try_or_wrap!(validate_input_with_database(input)?, Ok);
    Ok(Ok(do_stuff_with_validated_input(validated_input)?))
}

fn validate_input_with_database(input: Input) -> Result<Result<ValidatedInput, InvalidInputError>, DatabaseError>;

无运行时依赖