pub trait EucExt<T>where T: One + Zero + Copy + Mul<Output = T> + Div<Output = T> + Rem<Output = T> + Sub<Output = T> + Ord,{ // Provided method fn euc_ext(d1: T, d2: T) -> EucRes<T> { ... } }