pub trait Value<T: Copy + Default + Debug + AddAssign + Add<Output = T> + Div<Output = T> + DivAssign + Mul<Output = T> + MulAssign + Neg<Output = T> + Rem<Output = T> + RemAssign + Sub<Output = T> + SubAssign + PartialOrd + NumCast> {
type Type;
// Required method
fn value(&self, input: T) -> Self::Type;
}