macro_rules! f_attempt_err {
(
($func:ident) $expr:expr => $kind_fn:expr; $desc:expr
) => { ... };
(
($func:ident) $expr:expr => $kind_fn:expr; $desc:expr, $($arg:tt)*
) => { ... };
(
($func:ident) $expr:expr => $kind_fn:expr, $err_fn:expr; $desc:expr
) => { ... };
(
($func:ident) $expr:expr => $kind_fn:expr, $err_fn:expr; $desc:expr, $($arg:tt)*
) => { ... };
(
($func:ident; $ret:expr) $expr:expr => $kind_fn:expr; $desc:expr
) => { ... };
(
($func:ident; $ret:expr) $expr:expr => $kind_fn:expr; $desc:expr, $($arg:tt)*
) => { ... };
(
($func:ident; $ret:expr) $expr:expr => $kind_fn:expr, $err_fn:expr; $desc:expr
) => { ... };
(
($func:ident; $ret:expr) $expr:expr => $kind_fn:expr, $err_fn:expr; $desc:expr, $($arg:tt)*
) => { ... };
}