Crate priority_queue[−][src]
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 Item
s, of type I
) must implement
Hash
and Eq
traits.
This can frequently be achieved by using #[derive(PartialEq, Eq, Hash)]
.
If you implement these yourself, it is important that the following property holds:
k1 == k2 -> hash(k1) == hash(k2)
In other words, if two keys are equal, their hashes must be equal.
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); } }
Structs
PriorityQueue | A priority queue with efficient change function to change the priority of an element. |