pub trait BinOp<A, B = A> { type Output; // Required method fn eval(&self, lhs: A, rhs: B) -> Self::Output; }