Struct queue_queue::rusty::RustyPriorityQueue
source · pub struct RustyPriorityQueue<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> { /* private fields */ }Expand description
A priority queue implementation based on Rust’s BinaryHeap.
Templated with P for priority and T for data.
Pmust bePartialOrd,PartialEq, andEq.Tmust bePartialEqandEq.
If Node A and Node B have the same priority, but Node A was added before Node B,
then Node A will be prioritized over Node B.
See PriorityQueue for more information.
§Examples
let mut prio = RustyPriorityQueue::<usize, String>::default();
prio.enqueue(2, "hello".to_string());
prio.enqueue(3, "julia".to_string());
prio.enqueue(1, "world".to_string());
prio.enqueue(3, "naomi".to_string());
let mut new_prio: RustyPriorityQueue<usize, String> = prio
.into_iter()
.map(|(priority, data)| (priority, data.to_owned() + " wow"))
.collect();
assert_eq!(new_prio.dequeue(), Some((3, "julia wow".to_string())));
assert_eq!(new_prio.dequeue(), Some((3, "naomi wow".to_string())));
assert_eq!(new_prio.dequeue(), Some((2, "hello wow".to_string())));
assert_eq!(new_prio.dequeue(), Some((1, "world wow".to_string())));Implementations§
source§impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> RustyPriorityQueue<P, T>
impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> RustyPriorityQueue<P, T>
sourcepub const fn iter(&self) -> RustyPriorityQueueIterator<'_, P, T> ⓘ
pub const fn iter(&self) -> RustyPriorityQueueIterator<'_, P, T> ⓘ
Get an iterator over the priority queue
sourcepub fn into_iter(self) -> RustyPriorityQueueIntoIterator<P, T> ⓘ
pub fn into_iter(self) -> RustyPriorityQueueIntoIterator<P, T> ⓘ
Convert the priority queue into an iterator
Trait Implementations§
source§impl<P: Debug + PartialOrd + PartialEq + Eq, T: Debug + PartialEq + Eq> Debug for RustyPriorityQueue<P, T>
impl<P: Debug + PartialOrd + PartialEq + Eq, T: Debug + PartialEq + Eq> Debug for RustyPriorityQueue<P, T>
source§impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> Default for RustyPriorityQueue<P, T>
impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> Default for RustyPriorityQueue<P, T>
source§impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> FromIterator<(P, T)> for RustyPriorityQueue<P, T>
impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> FromIterator<(P, T)> for RustyPriorityQueue<P, T>
source§impl<'b, P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> IntoIterator for &'b RustyPriorityQueue<P, T>
impl<'b, P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> IntoIterator for &'b RustyPriorityQueue<P, T>
source§impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> IntoIterator for RustyPriorityQueue<P, T>
impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> IntoIterator for RustyPriorityQueue<P, T>
source§impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> PriorityQueue<P, T> for RustyPriorityQueue<P, T>
impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> PriorityQueue<P, T> for RustyPriorityQueue<P, T>
source§fn extend<I>(&mut self, iter: I)where
I: IntoIterator<Item = (P, T)>,
fn extend<I>(&mut self, iter: I)where
I: IntoIterator<Item = (P, T)>,
Extend the priority queue with an iterator
§Examples
let mut prio = RustyPriorityQueue::<usize, String>::default();
prio.extend(vec![(2, "world".to_string()), (3, "hello".to_string())]);
assert_eq!(prio.dequeue(), Some((3, "hello".to_string())));
assert_eq!(prio.dequeue(), Some((2, "world".to_string())));
assert_eq!(prio.dequeue(), None);source§fn with_capacity(capacity: usize) -> Self
fn with_capacity(capacity: usize) -> Self
Create a new priority queue with a given capacity Read more
source§fn reserve(&mut self, additional: usize)
fn reserve(&mut self, additional: usize)
Reserves capacity for at least additional elements more than the current length.
The allocator may reserve more space to speculatively avoid frequent allocations.
After calling reserve, capacity will be greater than or equal to
self.len() + additional.
Does nothing if capacity is already sufficient. Read moresource§fn reserve_exact(&mut self, additional: usize)
fn reserve_exact(&mut self, additional: usize)
Reserves the minimum capacity for at least additional elements more than the current length.
Unlike reserve, this will not deliberately over-allocate to speculatively avoid frequent allocations.
After calling
reserve_exact, capacity will be greater than or equal to self.len() + additional.
Does nothing if the capacity is already sufficient. Read moresource§fn shrink_to_fit(&mut self)
fn shrink_to_fit(&mut self)
Discards as much additional capacity as possible.
Auto Trait Implementations§
impl<P, T> Freeze for RustyPriorityQueue<P, T>
impl<P, T> RefUnwindSafe for RustyPriorityQueue<P, T>where
P: RefUnwindSafe,
T: RefUnwindSafe,
impl<P, T> Send for RustyPriorityQueue<P, T>
impl<P, T> Sync for RustyPriorityQueue<P, T>
impl<P, T> Unpin for RustyPriorityQueue<P, T>
impl<P, T> UnwindSafe for RustyPriorityQueue<P, T>where
P: UnwindSafe,
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more