macro_rules! f_err {
(
($func:expr) $kind:expr; $desc:expr
) => { ... };
(
($func:expr) $kind:expr; $desc:expr, $($arg:tt)*
) => { ... };
(
($func:expr) $kind:expr, $cause:expr; $desc:expr
) => { ... };
(
($func:expr) $kind:expr, $cause:expr; $desc:expr, $($arg:tt)*
) => { ... };
(
($func:expr; $ret:expr) $kind:expr; $desc:expr
) => { ... };
(
($func:expr; $ret:expr) $kind:expr; $desc:expr, $($arg:tt)*
) => { ... };
(
($func:expr; $ret:expr) $kind:expr, $cause:expr; $desc:expr
) => { ... };
(
($func:expr; $ret:expr) $kind:expr, $cause:expr; $desc:expr, $($arg:tt)*
) => { ... };
}