Trait dvcompute::simulation::strategy::QueueStorage [−][src]
pub trait QueueStorage {
type Priority;
type Item;
fn is_empty(&self, p: &Point<'_>) -> bool;
fn pop(&self, p: &Point<'_>) -> Option<Self::Item>;
fn push(&self, item: Self::Item, p: &Point<'_>);
fn push_with_priority(
&self,
priority: Self::Priority,
item: Self::Item,
p: &Point<'_>
);
fn remove_by<F>(&self, predicate: F, p: &Point<'_>) -> Option<Self::Item>
where
F: Fn(&Self::Item) -> bool;
fn exists<F>(&self, predicate: F, p: &Point<'_>) -> bool
where
F: Fn(&Self::Item) -> bool;
fn find<F>(&self, predicate: F, p: &Point<'_>) -> Option<Self::Item>
where
F: Fn(&Self::Item) -> bool,
Self::Item: Clone;
}
Expand description
Represents a queue storage.
The queue storage either supports push
, or push_with_priority
, but
it cannot support the both methods simulateneously.
Associated Types
The type of priorities, if push_with_priority
is supported.
Otherwise, it may define the ()
type.
Required methods
Push an item, or panic if only push_with_priority
is supported.
fn push_with_priority(
&self,
priority: Self::Priority,
item: Self::Item,
p: &Point<'_>
)
fn push_with_priority(
&self,
priority: Self::Priority,
item: Self::Item,
p: &Point<'_>
)
Push an item with the specified priority, or panic if only push
is supported.
Try to remove an item satisfying the specified predicate and return the item removed.
Detect whether there is an element satisfying the specified predicate in the queue.