macro_rules! crate_def_with_ty {
() => { ... };
(
$(#[$attr:meta])*
$vis:vis $name:ident;
$($rest:tt)*
) => { ... };
(
$(#[$attr:meta])*
$vis:vis $name:ident {
$(
$(#[$f_attr:meta])*
$f_vis:vis $f_name:ident: $f_ty:ty,
)*
}
$($rest:tt)*
) => { ... };
}