- Update
indexmap
dependency to 2.1.0 - Update MSRV to 1.63 to be able to link
indexmap
- Fixed Readme.md
- Update MSRV to Rust 0.56 and Rust 2021
- Add MSRV entry into Cargo.toml to make cargo check if Rust version compatible
- Switch from Travis.CI to GitHub Actions
- Add code from Readme.md to doctests to make it tested in CI
- Fixed bug in priority queue implementation.
- Added ability to use custom hasher
- Stopped to modify internal map in Entry API until user request it. However, this requires using of
unsafe
code. More details here - Added Miri tests to CI
- Added minimal rustc supported version:
1.46.0
- Removed some unneeded code and fixed some docs
- Refactored internal code to validate it correctness by type system.
Fixed typo in Readme.md
- Trait
Clone
is no more required for keys (Since it stored only once) - Renamed method
remove_item
toremove
- Added method
remove_entry
which returns both key and priority push
operation returns old priority now if same key already exists- Method
set_priority
returnsResult<TPriority, SetPriorityNotFoundError>
with old priority instead of panicing on missing keys - Added Entry API to allow whole cycle
Find -> Read -> Update
with just one hashmap lookup. - Added borrowing unordered iterator (by method
iter
) over which will iterate over whole queue in O(n) - Improved documentation by a little
- Added
#[forbid(unsafe_code)]
- Now uses IndexMap from indexmap crate internally
- Removed unsafe implementations of Sync + Send because they are deduced by compiler
- Made some optimizations which reduce timings by 50% but increase memory usage in worst case on 30%
- Added benchmarks
- Now items in queue can be looked up borrow using result, e.g. if
String
struct used as key,&str
can be passed as lookup key.
- Now
KeyedPriorityQueue
implementsDefault
trait
- Some clippy fixes