pub struct RealtimeRunner<CS> { /* private fields */ }Expand description
A runner that executes the simulation in synchronization with real-world time.
This runner controls the execution timing of each tick based on the tick_unit_duration.
Periods without active events or source firings are skipped, allowing for efficient
CPU usage while ensuring the simulation progresses at the correct wall-clock speed.
§Notes
- To perform periodic processing (e.g., status monitoring), register a periodic
Sourcethat does nothing. - If the implementations of
Model,Source, andHookare deterministic, this runner guarantees deterministic real-time execution.
Implementations§
Source§impl RealtimeRunner<AlwaysContinueStrategy>
impl RealtimeRunner<AlwaysContinueStrategy>
Sourcepub fn new(tick_unit_duration: StdDuration) -> Self
pub fn new(tick_unit_duration: StdDuration) -> Self
Creates a new RealtimeRunner with the AlwaysContinueStrategy.
§Arguments
tick_unit_duration- The real-world duration that corresponds to 1 tick.
Source§impl<CS> RealtimeRunner<CS>
impl<CS> RealtimeRunner<CS>
Sourcepub fn new_with_continue_strategy(
tick_unit_duration: StdDuration,
continue_strategy: CS,
) -> Self
pub fn new_with_continue_strategy( tick_unit_duration: StdDuration, continue_strategy: CS, ) -> Self
Creates a new RealtimeRunner with a specific ContinueStrategy.
Trait Implementations§
Source§impl<CS: Clone> Clone for RealtimeRunner<CS>
impl<CS: Clone> Clone for RealtimeRunner<CS>
Source§fn clone(&self) -> RealtimeRunner<CS>
fn clone(&self) -> RealtimeRunner<CS>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<E, M: Model<E>, CS: ContinueStrategy<E, M, ()>> Runner<E, M, CS> for RealtimeRunner<CS>
impl<E, M: Model<E>, CS: ContinueStrategy<E, M, ()>> Runner<E, M, CS> for RealtimeRunner<CS>
Source§fn run<F>(
&mut self,
engine: Engine<E, M>,
model: M,
should_stop: F,
) -> SimulationResult<M, CS::Err>
fn run<F>( &mut self, engine: Engine<E, M>, model: M, should_stop: F, ) -> SimulationResult<M, CS::Err>
The core, low-level method for driving the simulation. Read more
Source§fn run_playback<F>(
&mut self,
engine: Engine<E, M>,
model: M,
duration: Duration,
should_stop: F,
) -> SimulationResult<M, CS::Err>
fn run_playback<F>( &mut self, engine: Engine<E, M>, model: M, duration: Duration, should_stop: F, ) -> SimulationResult<M, CS::Err>
Advances the simulation while inserting a specified delay between ticks. Read more
Source§fn run_do_ticks(
&mut self,
engine: Engine<E, M>,
model: M,
tick_count: TimeTick,
include_zero_tick: bool,
) -> SimulationResult<M, CS::Err>
fn run_do_ticks( &mut self, engine: Engine<E, M>, model: M, tick_count: TimeTick, include_zero_tick: bool, ) -> SimulationResult<M, CS::Err>
Advances the simulation until a specific tick count is reached. Read more
Source§fn run_until_idle(
&mut self,
engine: Engine<E, M>,
model: M,
) -> SimulationResult<M, CS::Err>
fn run_until_idle( &mut self, engine: Engine<E, M>, model: M, ) -> SimulationResult<M, CS::Err>
Automatically advances the simulation until the event queue is exhausted (idle).
Source§fn run_until_model_condition<F>(
&mut self,
engine: Engine<E, M>,
model: M,
should_stop_model_condition: F,
) -> SimulationResult<M, CS::Err>
fn run_until_model_condition<F>( &mut self, engine: Engine<E, M>, model: M, should_stop_model_condition: F, ) -> SimulationResult<M, CS::Err>
Advances the simulation until the model’s internal state satisfies a condition. Read more
Source§fn run_batch_parallel<MF, EF, F>(
&self,
count: usize,
engine_builder: EF,
model_builder: MF,
should_stop: F,
) -> Vec<SimulationResult<M, CS::Err>> ⓘ
fn run_batch_parallel<MF, EF, F>( &self, count: usize, engine_builder: EF, model_builder: MF, should_stop: F, ) -> Vec<SimulationResult<M, CS::Err>> ⓘ
Executes multiple simulation trials in parallel across multiple CPU cores. Read more
Auto Trait Implementations§
impl<CS> Freeze for RealtimeRunner<CS>where
CS: Freeze,
impl<CS> RefUnwindSafe for RealtimeRunner<CS>where
CS: RefUnwindSafe,
impl<CS> Send for RealtimeRunner<CS>where
CS: Send,
impl<CS> Sync for RealtimeRunner<CS>where
CS: Sync,
impl<CS> Unpin for RealtimeRunner<CS>where
CS: Unpin,
impl<CS> UnsafeUnpin for RealtimeRunner<CS>where
CS: UnsafeUnpin,
impl<CS> UnwindSafe for RealtimeRunner<CS>where
CS: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more