#flow #macro #unwrap

maflow

Flow macros: basically unwrap for return, continue and break

1 unstable release

0.1.0 Jul 1, 2024

#1566 in Rust patterns


Used in 2 crates

MIT/Apache

7KB
73 lines

maflow

Simple Macros, changing the flow of development:

  • kill!( flow ) panics
  • exit!( flow ) returns ::default()
  • next!( flow ) continues
  • hold!( flow ) breaks

Flow can be:

  1. Option ..!{ inner = option } same as if Some(inner) = option {..}
  2. Result ..!{ inner = result } same as if Ok(inner) = option {..}
  3. bool ..!{ if bool } same as if bool {..}

Example

[dependencies]
maflow = "0.1"
use maflow::*;
fn main(){
    // Options and Results
    let some = Some(true);
    kill!{is_true = some} // same as .unwrap()
    exit!{is_true = some} // returns default() if None => ()
    for i in 0..9 {
        next!{is_true = some} // continues if None
        hold!{is_true = some} // breaks if None
        if is_true {}
    }
    // Conditional
    let is_true = true;
    kill!{if is_true} // panics if ..
    exit!{if is_true} // returns default() if ..
    for i in 0..9 {
        next!{if is_true} // continues if ..
        hold!{if is_true} // breaks if ..
    }
}

Also..

..implements the trait YayNay for Result, Option and bool with those methods:

  • .yay() returns true if Ok(..) Some(..) or true
  • .nay() returns true for the negative counter part

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate 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