Skip to main content

IsolatedSceneMetadata

Struct IsolatedSceneMetadata 

Source
pub struct IsolatedSceneMetadata { /* private fields */ }
Expand description

The [take_store]/[restore_store] bracket as an RAII guard, for OUT-OF-CRATE producers that build a payload against a LIVE document.

The hazard it exists for: crate::snapshot_solids captures whatever record the thread’s store holds for each name it is sealing. That is exactly right for a snapshot of the CURRENT scene (a face’s material rides along), and exactly WRONG for a payload built out of freshly-named solids that were never in this scene — the STEP-assembly import lane’s per-part crate::native_import_payload call being the first such producer. There, any collision between the names being stamped and names already in the document’s store would silently seal the CURRENT document’s metadata into the new part. Holding this guard across the encode makes the payload a pure function of its solids, which is what its determinism claim assumes.

Scope it to the ENCODE only. Anything that runs a history — the display rebuild, a pump — stamps records the document must keep, and dropping the guard afterwards would throw exactly those away.

Restores on drop, panics included; nesting is harmless (the inner guard takes an already-empty store and restores it).

Implementations§

Source§

impl IsolatedSceneMetadata

Source

pub fn begin() -> Self

Empty the thread’s scene-metadata store until the guard drops.

Trait Implementations§

Source§

impl Drop for IsolatedSceneMetadata

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

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

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

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: Sized + 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: Sized + ErasableGeneric<Repr = Self::Repr>,

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