use core::ops; pub trait Numeric: Copy + PartialOrd + ops::Add + ops::Mul + ops::Sub + ops::Div + ops::Neg + ops::AddAssign + ops::SubAssign + ops::MulAssign + ops::DivAssign { fn zero() -> Self; fn one() -> Self; } pub trait Integer: Numeric {} pub trait Float: Numeric { fn sqrt(self) -> Self; fn atan2(y: Self, x: Self) -> Self; }