Confusing. The name BinaryHeap does not suggest it's a max-heap. To mix things up, other popular languages like Python and Java uses min-heaps by default.
Inconvenient. There is a mental overhead to remember to call Reverse each time you push or pop. Note that this cannot be addressed by using a separate crate, which is even more inconvenient than typing Reverse.
Error-prone. If (when) you forget one of the Reverse, the code would still compile and you can hardly notice it. While this is a logical error which the compiler has no responsibility to detect, wouldn't it be great if we could prevent that with a minimal change to the standard library?
I believe min-heaps are used extensively enough to warrant their own name, so here is my proposal
Rename BinaryHeap to MaxHeap. To keep backward compatibility, we can add a pub use binary_heap::MaxHeap as BinaryHeap; in src/alloc/collections/mod.rs.
Wrap BinaryHeap<Reverse<T>> and expose it as std::collections::MinHeap.
I feel like our heap accumulated a bunch of problems (wrong default order, slow into-sorted, wrong into-iter, confusing naming, slow-perf due to being binary).
If we want to fix some of those, it would be useful to create some kind of tracking issue/shared designed doc, which collects all known drawbacks and all possible solution.
It seems like in this case we can benefit from brainstorming what’s the best solution is, rather than discussing if a particular solution is good enough