Skip to main content

SimEngine

Struct SimEngine 

Source
pub struct SimEngine<'a> {
    queue: &'a mut EventQueue,
    state: SimState,
    telemetry: &'a mut TelemetryAccumulator,
    handler: &'a mut dyn SpecHandler,
    sink: &'a mut TelemetrySink,
    encounter_end_ms: u32,
    pending_player_ready: Option<SimTime>,
}
Expand description

Event loop for a single sim iteration; queue and handler are borrowed for reuse across iterations.

Fields§

§queue: &'a mut EventQueue§state: SimState§telemetry: &'a mut TelemetryAccumulator§handler: &'a mut dyn SpecHandler§sink: &'a mut TelemetrySink§encounter_end_ms: u32§pending_player_ready: Option<SimTime>

Implementations§

Source§

impl<'a> SimEngine<'a>

Source

pub fn new(state: SimState, refs: SimEngineRefs<'a>) -> Self

Construct an iteration engine over caller-owned reusable state; the caller clears the queue and resets the handler first.

Source

pub fn run(&mut self) -> Result<()>

Execute one iteration to completion and record telemetry.

§Errors

Returns an error if the event budget is exceeded or the spec handler fails.

Source

pub fn capture_representative(&mut self) -> Result<()>

Deterministically rerun one selected iteration and install only its representative trace, leaving aggregates unchanged.

§Errors

Returns an error if the event budget is exceeded or the spec handler fails.

Source

fn run_with_mode(&mut self, mode: RunMode) -> Result<()>

Source

fn push_player_ready(&mut self, t: SimTime)

Source

fn handle_event(&mut self, event: Event, t: SimTime) -> Result<()>

Source

fn handle_player_ready_event(&mut self, t: SimTime) -> Result<()>

Source

fn handle_player_ready(&mut self, t: SimTime) -> Result<()>

Source

fn dispatch( &mut self, f: impl FnOnce(&mut dyn SpecHandler, &mut SimContext<'_>), ) -> Result<()>

Source

fn check_handler_error(&mut self) -> Result<()>

Source

fn finalize(&mut self, completed_at: SimTime, mode: RunMode)

Source

fn debug_assert_damage_telemetry_reconciled( &self, combat_total: f64, completed_at: SimTime, mode: RunMode, )

Trait Implementations§

Source§

impl Debug for SimEngine<'_>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for SimEngine<'a>

§

impl<'a> !RefUnwindSafe for SimEngine<'a>

§

impl<'a> Send for SimEngine<'a>

§

impl<'a> !Sync for SimEngine<'a>

§

impl<'a> Unpin for SimEngine<'a>

§

impl<'a> UnsafeUnpin for SimEngine<'a>

§

impl<'a> !UnwindSafe for SimEngine<'a>

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> SpecConfig for T
where T: Any + Debug + Send,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

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.
Source§

impl<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more