Skip to content

Commit f3173b8

Browse files
mulassign and clone once
1 parent 58d7e8a commit f3173b8

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

src/numeric/impl_numeric.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
use num_traits::Float;
1111
use num_traits::One;
1212
use num_traits::{FromPrimitive, Zero};
13-
use std::ops::{Add, Div, Mul, Sub};
13+
use std::ops::{Add, Div, Mul, MulAssign, Sub};
1414

1515
use crate::imp_prelude::*;
1616
use crate::numeric_util;
@@ -124,17 +124,15 @@ where D: Dimension
124124
#[track_caller]
125125
pub fn cumprod(&self, axis: Axis) -> Array<A, D>
126126
where
127-
A: Copy + Clone + Mul<Output = A>,
127+
A: Clone + Mul<Output = A> + MulAssign,
128128
D: Dimension + RemoveAxis,
129129
{
130130
if axis.0 >= self.ndim() {
131131
panic!("axis is out of bounds for array of dimension");
132132
}
133133

134134
let mut result = self.to_owned();
135-
result.accumulate_axis_inplace(axis, |&prev, curr| {
136-
*curr = *curr * prev;
137-
});
135+
result.accumulate_axis_inplace(axis, |prev, curr| *curr *= prev.clone());
138136
result
139137
}
140138

0 commit comments

Comments
 (0)