From c126f7fc8bf9e2abc0cac1fae40d04f4cf21e4d0 Mon Sep 17 00:00:00 2001 From: Paolo Barbolini Date: Mon, 11 Apr 2022 00:00:03 +0200 Subject: Add VecDeque::extend from vec::IntoIter and slice::Iter specializations --- library/alloc/src/vec/into_iter.rs | 5 +++++ library/alloc/src/vec/spec_extend.rs | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'library/alloc/src/vec') diff --git a/library/alloc/src/vec/into_iter.rs b/library/alloc/src/vec/into_iter.rs index 03c532bb697..8134eea570a 100644 --- a/library/alloc/src/vec/into_iter.rs +++ b/library/alloc/src/vec/into_iter.rs @@ -121,6 +121,11 @@ impl IntoIter { ptr::drop_in_place(remaining); } } + + /// Forgets to Drop the remaining elements while still allowing the backing allocation to be freed. + pub(crate) fn forget_remaining_elements(&mut self) { + self.ptr = self.end; + } } #[stable(feature = "vec_intoiter_as_ref", since = "1.46.0")] diff --git a/library/alloc/src/vec/spec_extend.rs b/library/alloc/src/vec/spec_extend.rs index c3b4534096d..506ee0ecfa2 100644 --- a/library/alloc/src/vec/spec_extend.rs +++ b/library/alloc/src/vec/spec_extend.rs @@ -62,7 +62,7 @@ impl SpecExtend> for Vec { unsafe { self.append_elements(iterator.as_slice() as _); } - iterator.ptr = iterator.end; + iterator.forget_remaining_elements(); } } -- cgit 1.4.1-3-g733a5