macro_rules! def_unit {
( $vis:vis $unit_name:ident; ) => { ... };
( $vis:vis $unit_name:ident {
$(from $from_body:tt ,)*
$(exp $exp_body:tt ,)*
$(sym $sym_body:tt ,)?
}) => { ... };
( $vis:vis $scale_name:ident |: $base_unit:ty => $unit_exp_name:ident; ) => { ... };
( $vis:vis $scale_name:ident |: $base_unit:ty => $unit_exp_name:ident {
$(from $from_body:tt ,)*
$(sym $sym_body:tt ,)?
} ) => { ... };
( $lhs:ty |* $rhs:ty => $vis:vis $mul:ident; ) => { ... };
( $lhs:ty |* $rhs:ty => $vis:vis $mul:ident {
$(from $from_body:tt ,)*
$(exp $exp_body:tt ,)*
$(sym $sym_body:tt ,)?
} ) => { ... };
( $lhs:ty |/ $rhs:ty => $vis:vis $div:ident; ) => { ... };
( $lhs:ty |/ $rhs:ty => $vis:vis $div:ident {
$(from $from_body:tt ,)*
$(exp $exp_body:tt ,)*
$(sym $sym_body:tt ,)?
} ) => { ... };
}