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}