array_matrix/vector/
outer.rs1use std::ops::Mul;
2
3use crate::{matrix_init, Matrix, Vector};
4
5pub trait Outer<Rhs: Vector>: Vector
6where Self::Output: Matrix
7{
8 type Output;
9
10 fn outer(self, rhs: Rhs) -> Self::Output;
32}
33
34impl<F, const L: usize, const H: usize> Outer<[F; L]> for [F; H]
35where
36 Self: Vector,
37 [F; L]: Vector,
38 [[<F as Mul<F>>::Output; L]; H]: Matrix,
39 F: Mul<F> + Clone
40{
41 type Output = [[<F as Mul<F>>::Output; L]; H];
42 fn outer(self, rhs: [F; L]) -> Self::Output
43 {
44 matrix_init(|r, c| self[r].clone()*rhs[c].clone())
45 }
46}