Macro define_errors
Source macro_rules! define_errors {
(
$(
$(#[$meta:meta])* $vis:vis enum $name:ident {
$(
$(#[error(display = $display:literal $(, $($display_param:ident),* )?)])?
#[kind($kind:ident $(, $($tag:ident = $val:expr),* )?)]
$variant:ident $( { $($field:ident : $ftype:ty),* $(,)? } )?, )*
}
)*
) => { ... };
(@find_source) => { ... };
(@find_source $field:ident $(, $rest:ident)*) => { ... };
(@find_source_match source, $source_field:ident $(, $rest:ident)*) => { ... };
(@find_source_match $field_name:ident, $field:ident $(, $rest:ident)*) => { ... };
(@get_caption $kind:ident) => { ... };
(@get_caption $kind:ident, caption = $caption:expr $(, $($rest:tt)*)?) => { ... };
(@get_caption $kind:ident, $tag:ident = $val:expr $(, $($rest:tt)*)?) => { ... };
(@get_tag $target:ident, $default:expr) => { ... };
(@get_tag retryable, $default:expr, retryable = $val:expr $(, $($rest:tt)*)?) => { ... };
(@get_tag fatal, $default:expr, fatal = $val:expr $(, $($rest:tt)*)?) => { ... };
(@get_tag status, $default:expr, status = $val:expr $(, $($rest:tt)*)?) => { ... };
(@get_tag exit, $default:expr, exit = $val:expr $(, $($rest:tt)*)?) => { ... };
(@get_tag $target:ident, $default:expr, $tag:ident = $val:expr $(, $($rest:tt)*)?) => { ... };
(@format_display $display:literal) => { ... };
(@format_display $display:literal, $($param:ident),+) => { ... };
(@format_display_field $field:ident) => { ... };
(@format_display_field $field:ident . $($rest:ident).+) => { ... };
}