pub trait MulMN<T = Self>: Matrix where
T: Matrix<Scalar = Self::Scalar>,
<T as Matrix>::Column: VectorSpace<Scalar = Self::Scalar>,
Self::Row: DualSpace<Dual = <T as Matrix>::Column> + FiniteDimensional<N = <T::Column as FiniteDimensional>::N>, {
type Output: FromItems + Matrix<Scalar = Self::Scalar>;
fn mul_mn(self, other: T) -> <Self as MulMN<T>>::Output { ... }
}