Skip to main content

PQueue

Struct PQueue 

Source
pub struct PQueue<T, W>
where T: Eq + Hash, W: FloatCore,
{ /* private fields */ }
Expand description

Max priority queue that can properly handle floats.

Implementations§

Source§

impl<T, W> PQueue<T, W>
where T: Eq + Hash, W: FloatCore,

Source

pub fn new() -> Self

Make a new queue.

Source

pub fn with_capacity(capacity: usize) -> Self

Make a queue with pre-allocated size.

Source

pub fn from_iterator<I>(iter: I) -> Self
where I: Iterator<Item = (T, W)>,

Make a queue from an iterator.

Source

pub fn push(&mut self, item: T, weight: W) -> Option<OrderedFloat<W>>

Insert the item, weight pair into the queue. If an element equal to item is already in the queue, its priority is updated and the old priority is returned in Some; otherwise, item is inserted with priority and None is returned.

Source

pub fn pop(&mut self) -> Option<(T, W)>

Removes the item with the greatest priority from the priority queue and returns the pair item, weight, or None if the queue is empty.

Source

pub fn remove(&mut self, item: T) -> Option<(T, W)>

Remove an arbitrary element from the priority queue. Returns the item, weight couple or None if the item is not found in the queue. The operation is performed in O(log(N)) time (worst case).

Source

pub fn is_empty(&self) -> bool

True if the queue has no elements.

Source

pub fn len(&self) -> usize

Current number of elements in the queue.

Source

pub fn iter(&self) -> impl Iterator<Item = (T, W)> + '_
where T: Clone,

Iterator over the elements in the queue.

Trait Implementations§

Source§

impl<T, W> Debug for PQueue<T, W>
where T: Eq + Hash + Debug, W: FloatCore + Debug,

Source§

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

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

impl<T, W> Default for PQueue<T, W>
where T: Eq + Hash, W: FloatCore,

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<T, W> Freeze for PQueue<T, W>

§

impl<T, W> RefUnwindSafe for PQueue<T, W>

§

impl<T, W> Send for PQueue<T, W>
where T: Send, W: Send,

§

impl<T, W> Sync for PQueue<T, W>
where T: Sync, W: Sync,

§

impl<T, W> Unpin for PQueue<T, W>
where T: Unpin, W: Unpin,

§

impl<T, W> UnsafeUnpin for PQueue<T, W>

§

impl<T, W> UnwindSafe for PQueue<T, W>
where T: UnwindSafe, W: 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

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

Source§

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>,

Source§

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.