Enhancement over Rust's std::collections::BinaryHeap.
It supports the following heaps and still maintains backward compatibility.
- Max heap
- Use BinaryHeap::new() or ::with_capacity()
- Min heap
- Use BinaryHeap::new_min() or ::with_capacity_min()
- Heap ordered by closure
- Use BinaryHeap::new_by() or ::with_capacity_by()
- Heap ordered by key generated by closure
- Use BinaryHeap::new_by_key() or ::with_capacity_by_key()
Other notable added methods are:
- BinaryHeap::from_vec_cmp() and BinaryHeap::from_vec() for more generic construction.
- .into_iter_sorted() which is less-surprising version of .into_iter(). The implementation is backported from std.
- .replace_cmp() which replace the comparator of the existing heap.
This crate requires Rust 1.32.0 or later.
See CHANGELOG.md. https://github.com/sekineh/binary-heap-plus-rs/blob/master/CHANGELOG.md
serde1.unsafe perf optimazation.See the following discussions for the background of the crate: - [1] https://internals.rust-lang.org/t/pre-rfc-binaryheap-flexibility/7482 - https://users.rust-lang.org/t/binaryheap-flexibility-revisited-supporting-other-than-max-heap/17062 - https://users.rust-lang.org/t/binaryheap-flexibility/8766 - https://github.com/rust-lang/rust/issues/38886