pub struct SaveState {
pub version: u16,
pub globals: BTreeMap<String, Value>,
pub global_ids: BTreeMap<String, DefinitionId>,
pub visits: Vec<VisitEntry>,
pub turns: Vec<VisitEntry>,
pub turn_index: u32,
pub rng_seed: i32,
pub previous_random: i32,
pub suspended: Option<SuspendedFlow>,
}Expand description
The runtime types that appear in bevy-brink’s own public signatures,
re-exported so consumers can name them without depending on brink-runtime:
FlowInstance, Program,
Choice, Step’s
return, RuntimeError’s error,
FallbackHandler for the “no bindings” advance path, the scoped
story-state types a host needs to build a policy and a per-step routing
view (see docs/scoped-flow-state-spec.md): WorldPolicy, Scope,
PolicyError, and ContextView (usually built via
flow_context_view instead of by hand) — and the per-entity durability
types produced/consumed by BrinkGlobals::save_state/load_state and
save_flow_state/load_flow_state (F6.3, see the globals module’s
“Save/load” docs): SaveState and LoadReport.
World is deliberately absent here — it collides with bevy::prelude::World
under a glob import, so it is re-exported under the alias BrinkWorld.
A persistent, name-keyed snapshot of a story’s game state.
Globals are keyed by variable name; visit/turn counts by scope
DefinitionId (which serializes as a stable "$tt_hash" string), with an
advisory author path attached when the scope is named.
Fields§
§version: u16Save-format version (see SAVE_FORMAT_VERSION).
globals: BTreeMap<String, Value>Global variables by name. BTreeMap for deterministic serialization.
global_ids: BTreeMap<String, DefinitionId>Each saved global’s compiled DefinitionId at save time, keyed by
the same name as Self::globals (M-3 rehydration miss-path lookup,
docs/modules-spec.md §5). A VAR/CONST/LIST living in a declared
module hashes its identity as (module, name), so a bare name alone
can’t reconstruct the id a #@was alias-table entry was compiled
against — this is the “module qualifier” the miss path needs,
round-tripped as the id itself rather than the module name, so no
hashing scheme has to be re-derived at load time. Consulted only when
a saved global’s name no longer matches any current global slot;
absent entries (older saves predating this field) simply fall back
to the pre-M-3 unknown-global report, same tolerant-of-patches
behavior as before. #[serde(default)] so an older save missing
this field entirely still deserializes.
visits: Vec<VisitEntry>Visit counts by scope id, sorted by id for deterministic output.
turns: Vec<VisitEntry>Turn-since counts by scope id, sorted by id.
turn_index: u32Global turn index.
rng_seed: i32RNG seed.
previous_random: i32Last drawn random value (so the RNG sequence resumes correctly).
suspended: Option<SuspendedFlow>This flow’s FlowFrame when parked mid-tunnel/mid-await
(docs/flow-suspension-spec.md §2/§9, FS-1). Absent when the flow
isn’t suspended — an ordinary save at a turn boundary, choice, or
-> END has no execution position to capture, same as before this
field existed. #[serde(default)] so an older save predating this
field still deserializes; skip_serializing_if keeps an unsuspended
save’s wire form byte-identical to before (no "suspended": null
noise).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for SaveState
impl<'de> Deserialize<'de> for SaveState
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<SaveState, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<SaveState, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for SaveState
impl Serialize for SaveState
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for SaveState
Auto Trait Implementations§
impl Freeze for SaveState
impl RefUnwindSafe for SaveState
impl Send for SaveState
impl Sync for SaveState
impl Unpin for SaveState
impl UnsafeUnpin for SaveState
impl UnwindSafe for SaveState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ConditionalSend for Twhere
T: Send,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.