pub struct EventScheduler { /* private fields */ }Expand description
Priority-ordered event queue.
Ensures deterministic processing order:
- Events are sorted by time
- Ties are broken by sequence number (insertion order)
§Example
use simular::engine::scheduler::EventScheduler;
use simular::engine::SimTime;
use simular::engine::state::{SimEvent, Vec3};
let mut scheduler = EventScheduler::new();
scheduler.schedule(
SimTime::from_secs(1.0),
SimEvent::AddBody {
mass: 1.0,
position: Vec3::zero(),
velocity: Vec3::zero(),
},
);Implementations§
Source§impl EventScheduler
impl EventScheduler
Sourcepub fn schedule(&mut self, time: SimTime, event: SimEvent)
pub fn schedule(&mut self, time: SimTime, event: SimEvent)
Schedule an event at the given time.
Sourcepub fn schedule_all(&mut self, time: SimTime, events: &[SimEvent])
pub fn schedule_all(&mut self, time: SimTime, events: &[SimEvent])
Schedule multiple events at the same time.
Events will be processed in the order they appear in the slice.
Sourcepub fn next(&mut self) -> Option<ScheduledEvent>
pub fn next(&mut self) -> Option<ScheduledEvent>
Get the next event (removes from queue).
Sourcepub fn peek(&self) -> Option<&ScheduledEvent>
pub fn peek(&self) -> Option<&ScheduledEvent>
Peek at the next event without removing it.
Sourcepub fn next_before(&mut self, time: SimTime) -> Option<ScheduledEvent>
pub fn next_before(&mut self, time: SimTime) -> Option<ScheduledEvent>
Get the next event if its time is before or at the given time.
Sourcepub fn drain_until(&mut self, time: SimTime) -> Vec<ScheduledEvent>
pub fn drain_until(&mut self, time: SimTime) -> Vec<ScheduledEvent>
Get all events up to and including the given time.
Sourcepub fn next_event_time(&self) -> Option<SimTime>
pub fn next_event_time(&self) -> Option<SimTime>
Get the time of the next event, if any.
Trait Implementations§
Source§impl Debug for EventScheduler
impl Debug for EventScheduler
Source§impl Default for EventScheduler
impl Default for EventScheduler
Source§fn default() -> EventScheduler
fn default() -> EventScheduler
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for EventScheduler
impl RefUnwindSafe for EventScheduler
impl Send for EventScheduler
impl Sync for EventScheduler
impl Unpin for EventScheduler
impl UnsafeUnpin for EventScheduler
impl UnwindSafe for EventScheduler
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