summaryrefslogtreecommitdiff
path: root/src/macros.rs
blob: 8ba326503ff28c09fe6caeabe486710d79bf2478 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#![allow(unused)]

/// Unwrap the result if it is `Ok(T)` or evaluate `$or` if it is `Err(_)`.
/// This fits use cases the `?`-operator does not cover, like:
/// ```
/// try_or!(result, continue);
/// ```
macro_rules! try_or {
    ($result:expr, $or:expr $(,)?) => {
        match $result {
            Ok(v) => v,
            Err(_) => { $or }
        }
    };
}

/// Unwrap the option if it is `Some(T)` or evaluate `$or` if it is `None`.
macro_rules! try_opt_or {
    ($option:expr, $or:expr $(,)?) => {
        match $option {
            Some(v) => v,
            None => { $or }
        }
    };
}