Struct sim::scheduler::Scheduler [−][src]
pub(crate) struct Scheduler { items: BinaryHeap<Item>, queued_commands: HashMap<CommandType, (Command, Time)>, latest_time: Time, last_time: Time, delta_times: Histogram<Duration>, cmd_type_counts: Counter<SimpleCommandType>, }
Expand description
The priority queue driving the discrete event simulation. Different pieces of the simulation schedule Commands to happen at a specific time, and the Scheduler hands out the commands in order.
Fields
items: BinaryHeap<Item>
queued_commands: HashMap<CommandType, (Command, Time)>
latest_time: Time
last_time: Time
delta_times: Histogram<Duration>
cmd_type_counts: Counter<SimpleCommandType>
Implementations
This next command might’ve actually been rescheduled to a later time; the caller won’t know that here.
This API is safer than handing out a batch of items at a time, because while processing one item, we might change the priority of other items or add new items. Don’t make the caller reconcile those changes – just keep pulling items from here, one at a time.
Trait Implementations
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations
impl RefUnwindSafe for Scheduler
impl UnwindSafe for Scheduler
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
type Output = T
type Output = T
Should always be Self