Skip to main content

ScriptedHost

Struct ScriptedHost 

Source
pub struct ScriptedHost {
    pub tick: u64,
    pub frames: Vec<Vec<(SenseId, Signal)>>,
    pub commands: Vec<HostCommand>,
    pub commands_per_tick: Vec<usize>,
}
Expand description

Scripted senses + recorded apply commands for deterministic replay tests.

Hold dense SenseIds resolved after bind. Each frame is a write list (not a full port snapshot) applied in sample_into when HostTime.tick == frame_index. Missing sense keys hold last value (runtime does not clear senses each frame). Ticks past frames.len() write nothing (last values remain). Prefer setting every sense every frame in tests so scripts stay explicit.

After each tick, commands grows with that frame’s outbox mapping.

Fields§

§tick: u64

Current frame index for Host::time (incremented in Host::apply).

§frames: Vec<Vec<(SenseId, Signal)>>

Write list for sample when tick == i (before apply increments tick).

§commands: Vec<HostCommand>

Flattened HostCommand history (append-only across ticks).

§commands_per_tick: Vec<usize>

Per-tick command counts (for slicing commands).

Implementations§

Source§

impl ScriptedHost

Source

pub fn new() -> Self

Create an empty scripted host with no frames or recorded commands.

Source

pub fn push_frame( &mut self, senses: impl IntoIterator<Item = (SenseId, Signal)>, )

Push one frame of dense sense writes (order preserved).

Source

pub fn last_commands(&self) -> &[HostCommand]

Commands applied on the last completed tick (after tick_once).

Trait Implementations§

Source§

impl Clone for ScriptedHost

Source§

fn clone(&self) -> ScriptedHost

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ScriptedHost

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ScriptedHost

Source§

fn default() -> ScriptedHost

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

impl Host for ScriptedHost

Source§

fn time(&self) -> HostTime

Discrete frame time passed to Runtime::begin_frame.
Source§

fn sample_into(&mut self, ports: &mut PortWriter<'_>) -> Result<(), HandleError>

Write sense ports for this tick (dense set_sense only).
Source§

fn apply(&mut self, outbox: Outbox<'_>)

Consume this frame’s outbox after loom (signals, capped emits).

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.