Simulation

Trait Simulation 

Source
pub trait Simulation {
    type StateLoadingError;
    type AccessData: ?Sized;
    type LoadData;
    type Event: Copy + Ord;
    type EventContainer<'a>: Iterator<Item = Self::Event>
       where Self: 'a;

    // Required methods
    fn data(&self) -> &Self::AccessData;
    fn reload(
        &mut self,
        data: Self::LoadData,
    ) -> Result<(), Self::StateLoadingError>;
    fn callables(&self) -> Self::EventContainer<'_>;
    fn revertables(&self) -> Self::EventContainer<'_>;
    fn callable(&self, event: Self::Event) -> bool;
    fn revertable(&self, event: Self::Event) -> bool;
    unsafe fn call(&mut self, event: Self::Event);
    unsafe fn revert(&mut self, event: Self::Event);

    // Provided methods
    fn try_call(&mut self, event: Self::Event) -> bool { ... }
    fn try_revert(&mut self, event: Self::Event) -> bool { ... }
    fn prepare_call(&mut self) -> CallState<'_, Self, Call> { ... }
    fn prepare_revert(&mut self) -> CallState<'_, Self, Revert> { ... }
}
Expand description

The Simulation trait provides an interface for interacting with a simulation.

Required Associated Types§

Source

type StateLoadingError

The error type returned when loading the simulation state fails.

Source

type AccessData: ?Sized

The type used to access the current state.

Source

type LoadData

The type of data used to load the simulation state.

Source

type Event: Copy + Ord

The type of events that can be called or reverted in the simulation.

Source

type EventContainer<'a>: Iterator<Item = Self::Event> where Self: 'a

The type of container used to access the available events.

Required Methods§

Source

fn data(&self) -> &Self::AccessData

Returns a reference to the data which repsesents the current state.

Source

fn reload( &mut self, data: Self::LoadData, ) -> Result<(), Self::StateLoadingError>

Reloads the simulation state from the provided data.

Source

fn callables(&self) -> Self::EventContainer<'_>

Returns the events that can currently be called.

Source

fn revertables(&self) -> Self::EventContainer<'_>

Returns the events that can currently be reverted.

Source

fn callable(&self, event: Self::Event) -> bool

Checks if the provided event can be called.

Source

fn revertable(&self, event: Self::Event) -> bool

Checks if the provided event can be reverted.

Source

unsafe fn call(&mut self, event: Self::Event)

Calls the provided event.

§Safety

The caller must ensure that the event is valid and can be called in the current simulation state.

Source

unsafe fn revert(&mut self, event: Self::Event)

Reverts the provided event.

§Safety

The caller must ensure that the event is valid and can be reverted in the current simulation state.

Provided Methods§

Source

fn try_call(&mut self, event: Self::Event) -> bool

Tries to call the provided event and returns if it was successful.

Source

fn try_revert(&mut self, event: Self::Event) -> bool

Tries to revert the provided event and returns if it was successful.

Source

fn prepare_call(&mut self) -> CallState<'_, Self, Call>

Prepares a safe helper to list callable elements and choose one to call.

Source

fn prepare_revert(&mut self) -> CallState<'_, Self, Revert>

Prepares a safe helper to list revertable elements and choose one to revert.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§