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.

  • P must be PartialOrd, PartialEq, and Eq.
  • T must be PartialEq and Eq.

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>

source

pub const fn iter(&self) -> RustyPriorityQueueIterator<'_, P, T>

Get an iterator over the priority queue

source

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>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> Default for RustyPriorityQueue<P, T>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> FromIterator<(P, T)> for RustyPriorityQueue<P, T>

source§

fn from_iter<I: IntoIterator<Item = (P, T)>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl<'b, P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> IntoIterator for &'b RustyPriorityQueue<P, T>

§

type IntoIter = RustyPriorityQueueIterator<'b, P, T>

Which kind of iterator are we turning this into?
§

type Item = (&'b P, &'b T)

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> IntoIterator for RustyPriorityQueue<P, T>

§

type Item = (P, T)

The type of the elements being iterated over.
§

type IntoIter = RustyPriorityQueueIntoIterator<P, T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<P: PartialOrd + PartialEq + Eq, T: PartialEq + Eq> PriorityQueue<P, T> for RustyPriorityQueue<P, T>

source§

fn enqueue(&mut self, priority: P, data: T)

Add an item to the queue
source§

fn dequeue(&mut self) -> Option<(P, T)>

Remove an item from the queue
source§

fn peek(&self) -> Option<(&P, &T)>

Peeks the next item in the queue
source§

fn len(&self) -> usize

Queue length
source§

fn is_empty(&self) -> bool

Bollean if the queue is empty

Auto Trait Implementations§

§

impl<P, T> Freeze for RustyPriorityQueue<P, T>

§

impl<P, T> RefUnwindSafe for RustyPriorityQueue<P, T>

§

impl<P, T> Send for RustyPriorityQueue<P, T>
where P: Send, T: Send,

§

impl<P, T> Sync for RustyPriorityQueue<P, T>
where P: Sync, T: Sync,

§

impl<P, T> Unpin for RustyPriorityQueue<P, T>
where P: Unpin, T: Unpin,

§

impl<P, T> UnwindSafe for RustyPriorityQueue<P, T>
where P: UnwindSafe, T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.