Struct xdevs::simulator::Simulator

source ·
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>

source

pub const fn new(model: M) -> Self

source

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.
source

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.