array_matrix/vector/
add.rs1use std::ops::Add;
2
3use crate::{Vector};
4
5pub trait VAdd<Rhs: Vector>: Vector
6where
7 Self::Output: Vector
8{
9 type Output;
10
11 fn add(self, rhs: Rhs) -> Self::Output;
28}
29
30impl<T1, T2, const L: usize> VAdd<[T2; L]> for [T1; L]
31where
32 Self: Vector,
33 [T2; L]: Vector,
34 [<T1 as Add<T2>>::Output; L]: Vector,
35 T1: Add<T2> + Clone,
36 T2: Clone
37{
38 type Output = [<T1 as Add<T2>>::Output; L];
39
40 fn add(self, rhs: [T2; L]) -> Self::Output
41 {
42 array_init::array_init(|i| self[i].clone() + rhs[i].clone())
43 }
44}