Macro aoko::when

source ·
macro_rules! when {
    ($predicate:expr => $true:expr ; $false:expr) => { ... };
    ($($(let $a:ident $(:$t:ty)? =)? $predicate:expr => $true:expr ; $false:expr),* $(,)?) => { ... };
}
Expand description

An alternative to if expression.

Examples

use aoko::{when, assert_eqs};
 
assert_eqs! {
    0, when!(true  => 0 ; 1);
    1, when!(false => 0 ; 1);
};
 
// Multiple expressions can't return,
// generally used to perform operations.
when! {
    true => op1() ; op2(),
    false => {
        op1();
        op3(1)
    } ; {
        op2();
        op4(1)
    },
    let a = true => "foo" ; "bar",
    let b: (u8, u128) = false => (0,1) ; (2,3),
};
assert_eqs! {
    a, "foo";
    b, (2, 3);
};