diff --git a/lib.rs b/lib.rs index 74c4abf..03601a7 100644 --- a/lib.rs +++ b/lib.rs @@ -60,7 +60,6 @@ use std::fmt; use std::hash::{Hash, Hasher}; use std::iter::{IntoIterator, FromIterator, repeat}; use std::mem; -#[cfg(not(feature = "union"))] use std::mem::ManuallyDrop; use std::ops; use std::ptr; @@ -270,7 +269,7 @@ impl<'a, T: 'a> Drop for Drain<'a,T> { #[cfg(feature = "union")] #[allow(unions_with_drop_fields)] union SmallVecData { - inline: A, + inline: ManuallyDrop, heap: (*mut A::Item, usize), } @@ -286,10 +285,10 @@ impl SmallVecData { } #[inline] fn from_inline(inline: A) -> SmallVecData { - SmallVecData { inline } + SmallVecData { inline: ManuallyDrop::new(inline) } } #[inline] - unsafe fn into_inline(self) -> A { self.inline } + unsafe fn into_inline(self) -> A { ManuallyDrop::into_inner(self.inline) } #[inline] unsafe fn heap(&self) -> (*mut A::Item, usize) { self.heap