pub trait BinaryOp { type Set; // Required method fn op(&self, lhs: &Self::Set, rhs: &Self::Set) -> Self::Set; }