1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18

#[macro_export]
macro_rules! simple_error {
    ($name:ident {$($item:ident ($type:ty),)*}) => {
        #[derive(Debug)]
        pub enum $name {
            $($item($type),)*
        }

        $(
            impl From<$type> for $name {
                fn from(e: $type) -> Self {
                    $name::$item(e)
                }
            }
        )*
    };
}