Skip to content

Commit

Permalink
Auto merge of #99339 - yanchith:binary-heap-ta, r=Amanieu
Browse files Browse the repository at this point in the history
Make BinaryHeap parametric over Allocator

Tracking issue: #32838
Related: rust-lang/wg-allocators#7

This parametrizes `BinaryHeap` with `A`, similarly to how other collections are parametrized.

A couple things I left out:

```
BinaryHeap::append

    Currently requires both structures to have the same allocator type. Could
    change, but depends on Vec::append, which has the same constraints.

impl<T: Ord> Default for BinaryHeap<T>

    Not parametrized, because there's nowhere to conjure the allocator from.

impl<T: Ord> FromIterator<T> for BinaryHeap<T>

    Not parametrized, because there's nowhere to conjure the allocator from.

impl<T: Ord, const N: usize> From<[T; N]> for BinaryHeap<T>

    Not parametrized, because there's nowhere to conjure the allocator from.

unsafe impl<I> AsVecIntoIter for IntoIter<I>

    AsVecIntoIter is not allocator aware, and I didn't dare change it without guidance. Is this something important?
```

I've seen very few tests for allocator_api in general, but I'd like to at least test this on some usage code in my projects before moving forward.

EDIT: Updated the list of impls and functions that are not affected by this. `BinaryHeap` no longer has a `SpecExtend` impl, and prior work made implementing `Extend` possible.
  • Loading branch information
bors committed Jun 13, 2023
2 parents 5e8c53f + e0e355d commit de1ff0a
Showing 1 changed file with 175 additions and 63 deletions.
Loading

0 comments on commit de1ff0a

Please sign in to comment.