Skip to content

Commit 6296b2c

Browse files
committed
FIX: Factor out making the uninit array in Zip
1 parent e0a2de4 commit 6296b2c

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/zip/mod.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#[macro_use]
1010
mod zipmacro;
1111

12+
use std::mem::MaybeUninit;
13+
1214
use crate::imp_prelude::*;
1315
use crate::AssignElem;
1416
use crate::IntoDimension;
@@ -737,6 +739,13 @@ where
737739
self.dimension[unroll_axis] = inner_len;
738740
FoldWhile::Continue(acc)
739741
}
742+
743+
pub(crate) fn uninitalized_for_current_layout<T>(&self) -> Array<MaybeUninit<T>, D>
744+
{
745+
let is_c = self.layout.is(CORDER);
746+
let is_f = !is_c && self.layout.is(FORDER);
747+
Array::maybe_uninit(self.dimension.clone().set_f(is_f))
748+
}
740749
}
741750

742751
/*
@@ -997,9 +1006,7 @@ macro_rules! map_impl {
9971006
{
9981007
// To support non-Copy elements, implementation of dropping partial array (on
9991008
// panic) is needed
1000-
let is_c = self.layout.is(CORDER);
1001-
let is_f = !is_c && self.layout.is(FORDER);
1002-
let mut output = Array::maybe_uninit(self.dimension.clone().set_f(is_f));
1009+
let mut output = self.uninitalized_for_current_layout::<R>();
10031010
self.apply_assign_into(&mut output, f);
10041011
unsafe {
10051012
output.assume_init()

0 commit comments

Comments
 (0)