pub trait Affine<X, Y = X> { type Output; // Required method fn affine(&self, mul: X, add: Y) -> Self::Output; }