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

try_or_wrap_s

? or try! macro, with an additional wrapping of the error in something else

2 unstable releases

0.2.0 Sep 4, 2019
0.1.0 Sep 4, 2019

#1717 in Rust patterns

Download history 419/week @ 2023-11-20 406/week @ 2023-11-27 405/week @ 2023-12-04 369/week @ 2023-12-11 391/week @ 2023-12-18 208/week @ 2023-12-25 350/week @ 2024-01-01 369/week @ 2024-01-08 455/week @ 2024-01-15 372/week @ 2024-01-22 314/week @ 2024-01-29 330/week @ 2024-02-05 400/week @ 2024-02-12 468/week @ 2024-02-19 487/week @ 2024-02-26 442/week @ 2024-03-04

1,799 downloads per month

LGPL-3.0-only

14KB

try_or_wrap

Crates.io License

This crate provides a macro similar to the old try! macro, or to the ?, except it wraps the error in something else.

This is useful if you want to use a ? for easily returning say, invalid input errors, but you can't do so because you have an additional Result level for handling internal errors of a different nature.

This macro allows you to do so:

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:

This crate provides a macro similar to the old try! macro, or to the ?, except it wraps the error in something else.

This is useful if you want to use a ? for easily returning say, invalid input errors, but you can't do so because you have an additional Result level for handling internal errors of a different nature.

This macro allows you to do so:

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>;

No runtime deps