pub trait Apply<A, Lhs> { type Output; // Required method fn dot(&self, lhs: &Lhs) -> Self::Output; }