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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#[macro_export]
macro_rules! err {
    ($error:ident) => {
        Err(
            $crate::logging::error_event::ErrLogEvent::new($error, $crate::evident::this_origin!())
                .into_err(),
        )
    };
    ($error:ident, $(add:$addon:expr),*) => {
        Err(
            $crate::logging::error_event::ErrLogEvent::new($error, $crate::evident::this_origin!())
                $(.add_addon($addon))*
                .into_err(),
        )
    };
    ($error:ident, $msg:expr) => {
        Err($crate::logging::error_event::ErrLogEvent::new_with_msg(
            $error,
            $msg,
            $crate::evident::this_origin!(),
        )
        .into_err())
    };
    ($error:ident, $msg:expr, $(add:$addon:expr),*) => {
        Err($crate::logging::error_event::ErrLogEvent::new_with_msg(
            $error,
            $msg,
            $crate::evident::this_origin!(),
        )
        $(.add_addon($addon))*
        .into_err())
    };

    ($enum_name:ident::$variant:ident) => {
        Err($crate::logging::error_event::ErrLogEvent::new(
            $enum_name::$variant,
            $crate::evident::this_origin!(),
        )
        .into_err())
    };
    ($enum_name:ident::$variant:ident, $(add:$addon:expr),*) => {
        Err($crate::logging::error_event::ErrLogEvent::new(
            $enum_name::$variant,
            $crate::evident::this_origin!(),
        )
        $(.add_addon($addon))*
        .into_err())
    };
    ($enum_name:ident::$variant:ident, $msg:expr) => {
        Err($crate::logging::error_event::ErrLogEvent::new_with_msg(
            $enum_name::$variant,
            $msg,
            $crate::evident::this_origin!(),
        )
        .into_err())
    };
    ($enum_name:ident::$variant:ident, $msg:expr, $(add:$addon:expr),*) => {
        Err($crate::logging::error_event::ErrLogEvent::new_with_msg(
            $enum_name::$variant,
            $msg,
            $crate::evident::this_origin!(),
        )
        $(.add_addon($addon))*
        .into_err())
    };
}

#[macro_export]
macro_rules! log {
    ($any:ident) => {
        $crate::set_event!(($enum_name::$variant).into(), $any.to_string()).finalize()
    };
    ($any:ident, $(add:$addon:expr),*) => {
        $crate::set_event!(($enum_name::$variant).into(), $any.to_string())$(.add_addon($addon))*.finalize()
    };
    ($any:ident, $msg:expr) => {
        $crate::set_event!(($enum_name::$variant).into(), $any.to_string()).finalize()
    };
    ($any:ident, $msg:expr, $(add:$addon:expr),*) => {
        $crate::set_event!(($enum_name::$variant).into(), $any.to_string())$(.add_addon($addon))*.finalize()
    };

    ($enum_name:ident::$variant:ident:ident) => {
        $crate::set_event!(
            ($enum_name::$variant).into(),
            ($enum_name::$variant).to_string()
        )
        .finalize()
    };
    ($enum_name:ident::$variant:ident:ident, $(add:$addon:expr),*) => {
        $crate::set_event!(
            ($enum_name::$variant).into(),
            ($enum_name::$variant).to_string()
        )
        $(.add_addon($addon))*
        .finalize()
    };
    ($enum_name:ident::$variant:ident, $msg:expr) => {
        $crate::set_event!(($enum_name::$variant).into(), $msg).finalize()
    };
    ($enum_name:ident::$variant:ident, $msg:expr, $(add:$addon:expr),*) => {
        $crate::set_event!(($enum_name::$variant).into(), $msg)$(.add_addon($addon))*.finalize()
    };
}