Remove all uses of mem::uninitialized for Rust 1.38

This commit is contained in:
Mark McCaskey
2019-07-31 13:21:20 +09:00
parent 99ecfaa503
commit 0ab8a0de09
6 changed files with 38 additions and 33 deletions

View File

@ -1,4 +1,3 @@
#[derive(Debug, Clone)]
enum MonoVecInner<T> {
None,
@ -36,7 +35,7 @@ impl<T> MonoVec<T> {
}
pub fn push(&mut self, item: T) {
let uninit = unsafe { mem::uninitialized() };
let uninit = MonoVecInner::None;
let prev = mem::replace(&mut self.inner, uninit);
let next = match prev {
MonoVecInner::None => MonoVecInner::Inline(item),
@ -54,7 +53,7 @@ impl<T> MonoVec<T> {
match self.inner {
MonoVecInner::None => None,
MonoVecInner::Inline(ref mut item) => {
let uninit = unsafe { mem::uninitialized() };
let uninit = unsafe { mem::zeroed() };
let item = mem::replace(item, uninit);
let uninit = mem::replace(&mut self.inner, MonoVecInner::None);
mem::forget(uninit);