Macro scale_fn

Source
macro_rules! scale_fn {
    (
        $name:ident,
        base: $base_arg:ident,
        constraint: $constraint_arg:ident,
        mantissa_fmt: $mantissa_fmt:expr,
        unit: $unit_arg:literal,
        doc: $doc_arg:literal
    ) => { ... };
    (
        $name:ident,
        base: $base_arg:ident,
        constraint: $constraint_arg:ident,
        mantissa_fmt: $mantissa_fmt:expr,
        groupings: $sep_arg:literal,
        unit: $unit_arg:literal,
        doc: $doc_arg:literal
    ) => { ... };
    (
        $name:ident,
        base: $base_arg:ident,
        constraint: $constraint_arg:ident,
        mantissa_fmt: $mantissa_fmt:expr,
        groupings: $sep_arg:literal,
        doc: $doc_arg:literal
    ) => { ... };
}
Expand description

Three nearly identical variants: with the unit argument only, with unit and groupings arguments, with groupings argument only. If you happen to know how to factor this, please make a suggestion!