binary-heap-plus

Crates.iobinary-heap-plus
lib.rsbinary-heap-plus
version0.5.0
sourcesrc
created_at2018-05-14 09:19:13.297147
updated_at2022-09-30 08:50:59.690041
descriptionEnhanced version of std::collections::BinaryHeap that supports max, min, and custom-order heaps.
homepage
repositoryhttps://github.com/sekineh/binary-heap-plus-rs
max_upload_size
id65310
size88,686
Hideki Sekine (sekineh)

documentation

README

binary-heap-plus-rs

Rust

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.

Compatibility and MSRV (Minimum Supported Rust Version)

This crate is based on the standard library's implementation of BinaryHeap from Rust 1.62.0.

The minimum supported Rust version is 1.56.0.

Changes

See CHANGELOG.md.

Thanks

  • I received many valuable feedback from Pre-RFC thread [1].
    • The current design is based on @ExpHP's suggestion that compiles on stable compiler.
    • DDOtten, steven099, CAD97, ExpHP, scottmcm, Nemo157 and gnzlbg, thanks for looking into the design!
  • @ulysseB sent me a first pull request!
  • @inesseq contributed feature serde1.
  • @davidli2010 contributed comparator update and unsafe perf optimization.

References

See the following discussions for the background of the crate:

Commit count: 156

cargo fmt