]> git.lizzy.rs Git - rust.git/commitdiff
provide a `SpecExtend` trait for `Vec<T>`
authorNeutron3529 <qweytr_1@163.com>
Tue, 24 Aug 2021 06:41:28 +0000 (14:41 +0800)
committerNeutron3529 <qweytr_1@163.com>
Fri, 12 Nov 2021 07:45:25 +0000 (15:45 +0800)
The discussion is [here](https://internals.rust-lang.org/t/append-vec-to-binaryheap/15209/3)

library/alloc/src/collections/binary_heap.rs

index 7fb7686a6e29790a5320cddb774adcf73e92d91a..7d87974b47e17725b8b2b18723b98dfa12150b11 100644 (file)
@@ -1584,6 +1584,14 @@ impl<T: Ord, I: IntoIterator<Item = T>> SpecExtend<I> for BinaryHeap<T> {
     }
 }
 
+impl<T: Ord> SpecExtend<Vec<T>> for BinaryHeap<T> {
+    fn spec_extend(&mut self, ref mut other: Vec<T>) {
+        let start = self.data.len();
+        self.data.append(other);
+        self.rebuild_tail(start);
+    }
+}
+
 impl<T: Ord> SpecExtend<BinaryHeap<T>> for BinaryHeap<T> {
     fn spec_extend(&mut self, ref mut other: BinaryHeap<T>) {
         self.append(other);