pub trait RationalArg: Clone + Ord + Div<Output = Self> + Rem<Output = Self> + Add<Output = Self> + AddAssign + Unsigned + Zero + One + MultiplyRational { }