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