From 476b5393329c6a541c836046873bcc03c949a1ac Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Fri, 23 Oct 2020 18:52:14 +0300 Subject: [PATCH] Get rid of mem::uninitialized() --- src/dmsort.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/dmsort.rs b/src/dmsort.rs index debd915..ce50f0d 100644 --- a/src/dmsort.rs +++ b/src/dmsort.rs @@ -1,7 +1,6 @@ // Copyright (c) 2017 Emil Ernerfeldt use std::cmp::Ordering; -use std::mem; use std::ptr; // ---------------------------------------------------------------------------- @@ -216,8 +215,9 @@ impl<'a, T> Drop for DmSorter<'a, T> { #[inline(always)] unsafe fn unsafe_push(vec: &mut Vec, value: &T) { let old_len = vec.len(); - vec.push(mem::uninitialized::()); + vec.reserve(1); ptr::copy_nonoverlapping(value, vec.get_unchecked_mut(old_len), 1); + vec.set_len(old_len + 1); } #[inline(always)] @@ -303,10 +303,9 @@ fn sort_move_by(slice: &mut [T], mut compare: F) // Append s.slice[read..(read + num_backtracked)] to s.dropped: { let old_len = s.dropped.len(); - for _ in 0..num_backtracked { - s.dropped.push(mem::uninitialized::()); - } + s.dropped.reserve(num_backtracked); ptr::copy_nonoverlapping(s.slice.get_unchecked(s.write), s.dropped.get_unchecked_mut(old_len), num_backtracked); + s.dropped.set_len(old_len + num_backtracked); } num_dropped_in_row = 0;