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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#[macro_export]
macro_rules! try_loaded {
    ($expr:expr) => {
        match $expr {
            Err(e) => {
                return Err(e);
            }
            Ok(None) => {
                return Ok(Default::default());
            }
            Ok(Some(v)) => v,
        }
    };
}

#[macro_export]
macro_rules! return_if {
    ($expr:expr) => {
        if $expr {
            return Ok(Default::default());
        }
    };
}

#[macro_export]
macro_rules! unwrap_or_return {
    ($option:expr) => {
        match $option {
            Some(val) => val,
            None => return Default::default(),
        }
    };
    ($option:expr, $ret:expr) => {
        match $option {
            Some(val) => val,
            None => return $ret,
        }
    };
}