konst::option

Macro or_else

Source
macro_rules! or_else {
    ($opt:expr, || $mapper:expr $(,)? ) => { ... };
    ($opt:expr, | $($anything:tt)* ) => { ... };
    ($opt:expr, $function:path $(,)?) => { ... };
}
Expand description

A const equivalent of Option::or_else

ยงExample

use konst::option;

const ARR: &[Option<u32>] = &[
    // You can use a closure-like syntax to pass code that runs on None.
    // `return` inside the "closure" returns from the function where this macro is called.
    option::or_else!(Some(3), || loop{}),
    option::or_else!(None::<u32>, || Some(5)),

    // You can also pass functions
    option::or_else!(Some(8), thirteen),
    option::or_else!(None::<u32>, thirteen),
];

assert_eq!(ARR, &[Some(3), Some(5), Some(8), Some(13)]);

const fn thirteen() -> Option<u32> {
    Some(13)
}