Skip to content

Commit 3344cf8

Browse files
applied feedback: safe unwrap(), avoid navie iter()
1 parent a0df066 commit 3344cf8

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/impl_methods.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3218,7 +3218,7 @@ impl<A, D: Dimension> ArrayRef<A, D>
32183218
/// ```
32193219
pub fn partition(&self, kth: usize, axis: Axis) -> Array<A, D>
32203220
where
3221-
A: Clone + Ord,
3221+
A: Clone + Ord + num_traits::Zero,
32223222
D: Dimension,
32233223
{
32243224
// Bounds checking
@@ -3234,8 +3234,8 @@ impl<A, D: Dimension> ArrayRef<A, D>
32343234
.lanes_mut(axis)
32353235
.into_iter()
32363236
.next()
3237-
.map(|lane| lane.is_contiguous())
3238-
.unwrap_or(false);
3237+
.unwrap()
3238+
.is_contiguous();
32393239

32403240
if is_contiguous {
32413241
Zip::from(result.lanes_mut(axis)).for_each(|mut lane| {
@@ -3246,7 +3246,11 @@ impl<A, D: Dimension> ArrayRef<A, D>
32463246

32473247
Zip::from(result.lanes_mut(axis)).for_each(|mut lane| {
32483248
temp_vec.clear();
3249-
temp_vec.extend(lane.iter().cloned());
3249+
temp_vec.resize(axis_len, A::zero());
3250+
3251+
Zip::from(&mut temp_vec).and(&lane).for_each(|dest, src| {
3252+
*dest = src.clone();
3253+
});
32503254

32513255
temp_vec.select_nth_unstable(kth);
32523256

0 commit comments

Comments
 (0)