#control #options #macro #ctrl #control-flow

ctrl_macros

Control flow macros for Option and Result

1 unstable release

0.1.0 Aug 2, 2022

#2577 in Rust patterns

MIT/Apache

5KB
96 lines

README

Control macros for Option and Result.

Helps you change this:

fn returns_early_with_value(input: Result<i32, String>) {
    // Early return when something is wrong.
    let input: i32 = match input {
        Ok(value) => value,
        Err(_) => return,
    };

    // Use it normally below...
    println!("Input is: {}", input);
}

into

use ctrl_macros::{ok_or_return};

fn returns_early_with_value(input: Result<i32, String>) {
    let input: i32 = ok_or_return!(input);
    println!("Input is: {}", input);
}

Examples

let x = ok_or!(x, return 42);
for i in 0..5 {
    let x = ok_or_continue!(x);
}
for i in 0..5 {
    let x = ok_or_break!(x);
}

and some_or equivalents

some_or!
some_or_return!
some_or_continue!
some_or_break!

License

ctrl_macros is dual licensed under either:

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

No runtime deps