palette/macros/lazy_select.rs
1/// Chains calls to `LazySelect::lazy_select` to mimic an if-else chain.
2///
3/// ```ignore
4/// let result = lazy_select! {
5/// if predicate1 => result1,
6/// if predicate2 => result2,
7/// else => result3,
8/// };
9/// ```
10macro_rules! lazy_select {
11 ( if $if_pred:expr => $if_body:expr, $(if $else_if_pred:expr => $else_if_body:expr,)* else => $else_body:expr $(,)?) => {
12 crate::bool_mask::LazySelect::lazy_select(
13 $if_pred,
14 || $if_body,
15 || lazy_select!($(if $else_if_pred => $else_if_body,)* else => $else_body)
16 )
17 };
18 (else => $else_body:expr) => {
19 $else_body
20 }
21}