Skip to content

Commit 29fd112

Browse files
committed
move_into: Skip dropping if element doesn't have drop
1 parent 4ebbb71 commit 29fd112

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/impl_owned_array.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22
use alloc::vec::Vec;
3+
use std::mem;
34
use std::mem::MaybeUninit;
45

56
use rawpointer::PointerExt;
@@ -33,7 +34,7 @@ impl<A> Array<A, Ix0> {
3334
/// assert_eq!(scalar, Foo);
3435
/// ```
3536
pub fn into_scalar(self) -> A {
36-
let size = ::std::mem::size_of::<A>();
37+
let size = mem::size_of::<A>();
3738
if size == 0 {
3839
// Any index in the `Vec` is fine since all elements are identical.
3940
self.data.into_vec().remove(0)
@@ -208,7 +209,7 @@ impl<A, D> Array<A, D>
208209
let data_len = self.data.len();
209210

210211
let has_unreachable_elements = self_len != data_len;
211-
if !has_unreachable_elements || std::mem::size_of::<A>() == 0 {
212+
if !has_unreachable_elements || mem::size_of::<A>() == 0 || !mem::needs_drop::<A>() {
212213
unsafe {
213214
self.data.set_len(0);
214215
}

0 commit comments

Comments
 (0)