diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2018-10-05 09:15:48 -0700 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2018-10-05 09:15:48 -0700 |
| commit | 9a41cfabba83125b212800aa62ebda0c3691ba93 (patch) | |
| tree | 82c8114b79707d2ae0c5a31d46645e02b8f34537 /src/liballoc | |
| parent | 54441484d13998eef3354780c86e97342776483d (diff) | |
| download | rust-9a41cfabba83125b212800aa62ebda0c3691ba93.tar.gz rust-9a41cfabba83125b212800aa62ebda0c3691ba93.zip | |
Revert "Add docs and debug asserts"
This reverts commit 1a1a7f6167edf18b8a0ab488e651f7748cc2e9d3.
Diffstat (limited to 'src/liballoc')
| -rw-r--r-- | src/liballoc/collections/vec_deque.rs | 34 |
1 files changed, 11 insertions, 23 deletions
diff --git a/src/liballoc/collections/vec_deque.rs b/src/liballoc/collections/vec_deque.rs index 1bd1861db0b..7c16258e84e 100644 --- a/src/liballoc/collections/vec_deque.rs +++ b/src/liballoc/collections/vec_deque.rs @@ -202,17 +202,10 @@ impl<T> VecDeque<T> { len); } - /// Copies all values from `src` to the back of `self`, wrapping around if needed. - /// - /// # Safety - /// - /// The capacity must be sufficient to hold self.len() + src.len() elements. - /// If so, this function never panics. + /// Copies all values from `src` to `self`, wrapping around if needed. + /// Assumes capacity is sufficient. #[inline] unsafe fn copy_slice(&mut self, src: &[T]) { - let expected_new_len = self.len() + src.len(); - debug_assert!(self.capacity() >= expected_new_len); - let dst_high_ptr = self.ptr().add(self.head); let dst_high_len = self.cap() - self.head; @@ -223,7 +216,6 @@ impl<T> VecDeque<T> { ptr::copy_nonoverlapping(src_low.as_ptr(), self.ptr(), src_low.len()); self.head = self.wrap_add(self.head, src.len()); - debug_assert!(self.len() == expected_new_len); } /// Copies a potentially wrapping block of memory len long from src to dest. @@ -1858,21 +1850,17 @@ impl<T> VecDeque<T> { #[inline] #[stable(feature = "append", since = "1.4.0")] pub fn append(&mut self, other: &mut Self) { - unsafe { - // Guarantees there is space in `self` for `other`. - self.reserve(other.len()); - - { - let (src_high, src_low) = other.as_slices(); + // Guarantees there is space in `self` for `other + self.reserve(other.len()); - // This is only safe because copy_slice never panics when capacity is sufficient. - self.copy_slice(src_low); - self.copy_slice(src_high); - } - - // Some values now exist in both `other` and `self` but are made inaccessible in `other`. - other.tail = other.head; + unsafe { + let (src_high, src_low) = other.as_slices(); + self.copy_slice(src_low); + self.copy_slice(src_high); } + + // Some values now exist in both `other` and `self` but are made inaccessible in `other`. + other.tail = other.head; } /// Retains only the elements specified by the predicate. |
