Skip to main content

DebugSnapshot

Struct DebugSnapshot 

Source
pub struct DebugSnapshot {
    pub status: &'static str,
    pub current_location: Option<String>,
    pub position: Option<DebugPosition>,
    pub turn_index: u32,
    pub globals: Vec<DebugGlobal>,
    pub call_stack: Vec<DebugFrame>,
    pub visit_counts: Vec<DebugVisit>,
    pub visit_ids: Vec<DebugVisitId>,
    pub pending_choices: Vec<DebugChoice>,
    pub rng: DebugRng,
}
Expand description

A structured, read-only snapshot of the runtime’s current state.

Fields§

§status: &'static str

Execution status: active / waiting_for_choice / done / ended.

§current_location: Option<String>

Nearest named knot/stitch the cursor is currently in, if resolvable.

§position: Option<DebugPosition>

Precise execution position for the active flow: the innermost call frame’s current (container_idx, offset). None when the call stack has no frame with an open container (e.g. Ended/Done with nothing left to run) — mirrors call_stack[0].position when the call stack is non-empty. Also None whenever the innermost frame is a CallFrameType::External frame: those are pushed with an empty container_stack (there is no bytecode position “inside” a deferred external call), and an external frame stays the top frame for as long as has_pending_external() is true — so a flow parked on a deferred external (StepOutcome::AwaitingExternal, status active, nothing exhausted) reports position: None here too. The call site that invoked the external lives on that frame’s own return_address, or equivalently on the position of the caller frame just below it.

§turn_index: u32

Current turn index.

§globals: Vec<DebugGlobal>

Global variables and their current values (display strings).

§call_stack: Vec<DebugFrame>

Active call frames, innermost (current) first.

§visit_counts: Vec<DebugVisit>

Per-knot/stitch visit counts, sorted by path.

§visit_ids: Vec<DebugVisitId>

EVERY container visit count keyed by DefinitionId display string (W11/#3304): unlike Self::visit_counts — which resolves through named paths and silently drops anonymous containers — this carries the anonymous choice/gather bodies too, so a consumer can join against the HIR overlay projection’s def_id (#3234’s identity). Sorted by id for determinism.

§pending_choices: Vec<DebugChoice>

Choices currently offered to the player.

§rng: DebugRng

Story RNG state.

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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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.