priority-queue 0.7.0

A Priority Queue implemented as a heap with a function to efficiently change the priority of an item.
Documentation

This crate provide a priority queue backed by an hashmap with some efficient methods to change the priority of an element in O(log(N)) time (worst case).

The elements (called Items, of type I) must implement Hash and Eq traits.

The priority P may be any type that implements Ord. For reverse order remember the standard wrapper Reverse<T>

Example

use priority_queue::PriorityQueue;

fn main() {
let mut pq = PriorityQueue::new();

assert!(pq.is_empty());
pq.push("Apples", 5);
pq.push("Bananas", 8);
pq.push("Strawberries", 23);

assert_eq!(pq.peek(), Some((&"Strawberries", &23)));

pq.change_priority("Bananas", 25);
assert_eq!(pq.peek(), Some((&"Bananas", &25)));

for (item, _) in pq.into_sorted_iter() {
println!("{}", item);
}
}