pub struct Simulator<M: AbstractSimulator> { /* private fields */ }
Expand description
A DEVS simulator that uses a virtual clock (i.e., no real time is used).
Implementations§
source§impl<M: AbstractSimulator> Simulator<M>
impl<M: AbstractSimulator> Simulator<M>
pub const fn new(model: M) -> Self
sourcepub fn simulate_rt(
&mut self,
t_start: f64,
t_stop: f64,
wait_until: impl FnMut(f64, &mut M::Input) -> f64,
propagate_output: impl FnMut(&M::Output)
)
pub fn simulate_rt( &mut self, t_start: f64, t_stop: f64, wait_until: impl FnMut(f64, &mut M::Input) -> f64, propagate_output: impl FnMut(&M::Output) )
It executes the simulation of the inner DEVS model from t_start
to t_stop
.
It provides support for real time execution via the following arguments:
wait_until
: a closure that is called between state transitions. It receives the time of the next state transition and a mutable reference to the input ports. It returns the actual time “waited”. If the returned time is equal to the input time, an internal/confluent state transition is performed. Otherwise, it assumes that an external event happened and executes the external transition function.propagate_output
: a closure that is called after output functions. It receives a mutable reference to the output ports so the closure can access to output events. Feel free to ignore this argument if you do not need to propagate output messages.
sourcepub fn simulate_vt(&mut self, t_start: f64, t_stop: f64)
pub fn simulate_vt(&mut self, t_start: f64, t_stop: f64)
It executes the simulation of the inner DEVS model from t_start
to t_stop
.
It uses a virtual clock (i.e., no real time is used).
Auto Trait Implementations§
impl<M> RefUnwindSafe for Simulator<M>where
M: RefUnwindSafe,
impl<M> Send for Simulator<M>where
M: Send,
impl<M> Sync for Simulator<M>where
M: Sync,
impl<M> Unpin for Simulator<M>where
M: Unpin,
impl<M> UnwindSafe for Simulator<M>where
M: 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