Skip to content

Commit 3d9933e

Browse files
committed
One allocation less.
1 parent 26b1087 commit 3d9933e

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/linalg/impl_linalg.rs

+10-4
Original file line numberDiff line numberDiff line change
@@ -864,10 +864,13 @@ where
864864
Sa: Data<Elem = T>,
865865
Sb: Data<Elem = T>,
866866
I: Dimension,
867-
T: crate::ScalarOperand,
867+
T: crate::ScalarOperand + std::ops::MulAssign,
868868
for<'a> &'a ArrayBase<Sb, I>: std::ops::Mul<T, Output = Array<T, I>>,
869869
{
870-
general_outer_to_dyn(a, b, |mut res, x, a| res.assign(&(a * x)))
870+
general_outer_to_dyn(a, b, |mut res, x, a| {
871+
res.assign(a);
872+
res *= x
873+
})
871874
}
872875

873876
#[allow(dead_code)]
@@ -902,10 +905,13 @@ where
902905
Sa: Data<Elem = T>,
903906
Sb: Data<Elem = T>,
904907
I: Dimension,
905-
T: crate::ScalarOperand,
908+
T: crate::ScalarOperand + std::ops::MulAssign,
906909
for<'a> &'a ArrayBase<Sb, I>: std::ops::Mul<T, Output = Array<T, I>>,
907910
{
908-
general_outer_same_size(a, b, |mut res, x, a| res.assign(&(a * x)))
911+
general_outer_same_size(a, b, |mut res, x, a| {
912+
res.assign(&a);
913+
res *= x
914+
})
909915
}
910916

911917
#[cfg(test)]

0 commit comments

Comments
 (0)