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

try_wrap_ok

?try! 宏,具有额外的 Ok 包装

1 个不稳定版本

0.1.1 2019年8月20日
0.1.0 2019年8月20日

#2501Rust 模式

LGPL-3.0-only

14KB

try_wrap_ok

Crates.io License

此软件包提供了一个类似于旧 try! 宏或 ? 的宏,但它在额外的 Ok 中包装错误。

如果您想要使用 ? 来轻松返回无效输入错误,但又不能这样做,因为您有一个额外的 Result 层级来处理不同类型的内部错误,那么这很有用。

此宏允许您这样做

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

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

lib.rs:

此软件包提供了一个类似于旧 try! 宏或 ? 的宏,但它在额外的 Ok 中包装错误。

如果您想要使用 ? 来轻松返回无效输入错误,但又不能这样做,因为您有一个额外的 Result 层级来处理不同类型的内部错误,那么这很有用。

此宏允许您这样做

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

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

无运行时依赖