about summary refs log tree commit diff
path: root/library/alloc/src
diff options
context:
space:
mode:
authorThe 8472 <git@infinite-source.de>2023-03-27 14:56:14 +0200
committerThe 8472 <git@infinite-source.de>2023-03-27 16:03:30 +0200
commit41807938d2fbc7928d75b1d68ac08899682168a2 (patch)
tree8f4c5b446fe3c09500a9d8d207f6a386d0f36553 /library/alloc/src
parent9cd9da2cd1c365791c7bf41be5759ebc34180aa0 (diff)
downloadrust-41807938d2fbc7928d75b1d68ac08899682168a2.tar.gz
rust-41807938d2fbc7928d75b1d68ac08899682168a2.zip
fix advance_by impl for vec_deque and add tests
Diffstat (limited to 'library/alloc/src')
-rw-r--r--library/alloc/src/collections/vec_deque/into_iter.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/library/alloc/src/collections/vec_deque/into_iter.rs b/library/alloc/src/collections/vec_deque/into_iter.rs
index c277c62ad14..e2b40f7912e 100644
--- a/library/alloc/src/collections/vec_deque/into_iter.rs
+++ b/library/alloc/src/collections/vec_deque/into_iter.rs
@@ -56,10 +56,10 @@ impl<T, A: Allocator> Iterator for IntoIter<T, A> {
 
     #[inline]
     fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
-        let rem = if self.inner.len < n {
-            let len = self.inner.len;
+        let len = self.inner.len;
+        let rem = if len < n {
             self.inner.clear();
-            len - n
+            n - len
         } else {
             self.inner.drain(..n);
             0
@@ -186,12 +186,12 @@ impl<T, A: Allocator> DoubleEndedIterator for IntoIter<T, A> {
     #[inline]
     fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
         let len = self.inner.len;
-        let rem = if len >= n {
-            self.inner.truncate(len - n);
-            0
-        } else {
+        let rem = if len < n {
             self.inner.clear();
             n - len
+        } else {
+            self.inner.truncate(len - n);
+            0
         };
         NonZeroUsize::new(rem).map_or(Ok(()), Err)
     }