Skip to main content

Engine

Struct Engine 

Source
pub struct Engine {
    pub executor: Executor,
    /* private fields */
}
Expand description

Single-threaded asynchronous simulation runtime.

An application normally creates an Engine, obtains one or more clocks, constructs components or models with new_and_register constructors, connects their ports, and then calls run or run_until. Connections are intentionally part of setup: a port that is still unconnected when a task tries to use it represents a model-topology error.

The engine owns the executor, a spawner for additional tasks, the top-level trace Entity, the shared Tracker, and the registry of components that should begin running when simulation starts.

Fields§

§executor: Executor

Implementations§

Source§

impl Engine

Source

pub fn new(tracker: &Tracker) -> Self

Create a standalone engine.

Source

pub fn register(&self, component: Component)

Register a component that will be run as the simulation starts.

Registration should happen during construction, before the engine run begins. Passive helper objects that do not have independent async behavior do not need to be registered.

Source

pub fn run(&mut self) -> SimResult

Source

pub fn run_until<T: Default + Copy + 'static>( &mut self, event: Eventable<T>, ) -> SimResult

Source

pub fn spawner(&self) -> Spawner

Source

pub fn spawn(&self, future: impl Future<Output = SimResult> + 'static)

Source

pub fn set_randomize_task_order(&self, randomize: bool)

Source

pub fn set_task_order_seed(&self, seed: u64)

Source

pub fn default_clock(&mut self) -> Clock

Source

pub fn clock_hz(&mut self, freq_hz: f64) -> Clock

Source

pub fn clock_khz(&mut self, freq_khz: f64) -> Clock

Source

pub fn clock_mhz(&mut self, freq_mhz: f64) -> Clock

Source

pub fn clock_ghz(&mut self, freq_ghz: f64) -> Clock

Source

pub fn time_now_ns(&self) -> f64

Source

pub fn top(&self) -> &Rc<Entity>

Source

pub fn tracker(&self) -> Tracker

Trait Implementations§

Source§

impl Default for Engine

Create a default engine that sends Track events to stdout.

This is provided to keep documentation examples simple with fewer concepts to have to consider at once.

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Drop for Engine

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

impl !Freeze for Engine

§

impl !RefUnwindSafe for Engine

§

impl !Send for Engine

§

impl !Sync for Engine

§

impl !UnwindSafe for Engine

§

impl Unpin for Engine

§

impl UnsafeUnpin for Engine

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>,

Source§

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>,

Source§

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.