Skip to content

Commit b457aec

Browse files
committed
FIX: Simplify code in Baseiter::fold
Remove redundant .clone() and simplify inner loop
1 parent ab52a98 commit b457aec

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/iterators/mod.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,18 @@ impl<A, D: Dimension> Iterator for Baseiter<A, D> {
7979
let ndim = self.dim.ndim();
8080
debug_assert_ne!(ndim, 0);
8181
let mut accum = init;
82-
while let Some(mut index) = self.index.clone() {
82+
while let Some(mut index) = self.index {
8383
let stride = self.strides.last_elem() as isize;
8484
let elem_index = index.last_elem();
8585
let len = self.dim.last_elem();
8686
let offset = D::stride_offset(&index, &self.strides);
8787
unsafe {
8888
let row_ptr = self.ptr.offset(offset);
89-
for i in 0..(len - elem_index) {
89+
let mut i = 0;
90+
let i_end = len - elem_index;
91+
while i < i_end {
9092
accum = g(accum, row_ptr.offset(i as isize * stride));
93+
i += 1;
9194
}
9295
}
9396
index.set_last_elem(len - 1);

0 commit comments

Comments
 (0)