1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#[macro_export] macro_rules! def_exp_scale_exp{ ( $( $vis:vis $name:ident[ $( $type:ty = $value:expr , )* ], )* ) => { $( $vis struct $name; $( $crate::impl_exp_scale_exp!($name | $type = $value); )* )* } } #[macro_export] macro_rules! impl_exp_scale_exp { ( $name:ty | $type:ty = $value:expr ) => { impl $crate::unit::scale::exp::ScaleExponent<$type> for $name { const EXPONENT: $type = $value; } }; }