Macro konst::option::ok_or_else[][src]

macro_rules! ok_or_else {
    ($e : expr, || $v : expr $(,) ?) => { ... };
    ($opt : expr, | $($anything : tt) *) => { ... };
    ($e : expr, $v : expr $(,) ?) => { ... };
}
Expand description

A const equivalent of Option::ok_or_else

Example

use konst::option;

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

    // You can also pass functions
    option::ok_or_else!(Some(8), thirteen),
    option::ok_or_else!(None, thirteen),
];

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

const fn thirteen() -> u32 {
    13
}