Skip to main content

StoreHookState

Struct StoreHookState 

Source
pub struct StoreHookState<'a, T>
where T: 'static,
{ /* private fields */ }
Expand description

State yielded to and epoch deadline callback or a call hook.

This structure is similar to StoreContextMut except that it does not implement AsContextMut and instead only implements AsContext. This means that the store can be inspected and read but not mutated. This structure does allow mutable access to the underlying T within the store, however.

This type is used in APIs such as Store::epoch_deadline_callback and Store::call_hook where the embedder is given access to the store at points in time where it’s not valid to mutate WebAssembly-facing state. For example when an epoch deadline happens WebAssembly is between two instructions and general state in the module cannot be mutated spec-wise. This type expresses this static guarantee by ensuring that store data can be read, embedder-specific data can be mutated, but nothing within the store otherwise can be mutated.

Implementations§

Source§

impl<'a, T> StoreHookState<'a, T>

Source

pub fn data(&self) -> &T

Returns a shared reference to the underlying store data.

Source

pub fn data_mut(&mut self) -> &mut T

Returns a mutable reference to the underlying store data.

Trait Implementations§

Source§

impl<'a, T> AsContext for StoreHookState<'a, T>

Source§

type Data = T

The host information associated with the Store, aka the T in Store<T>.
Source§

fn as_context(&self) -> StoreContext<'_, T>

Returns the store context that this type provides access to.

Auto Trait Implementations§

§

impl<'a, T> !RefUnwindSafe for StoreHookState<'a, T>

§

impl<'a, T> !UnwindSafe for StoreHookState<'a, T>

§

impl<'a, T> Freeze for StoreHookState<'a, T>
where StoreContextMut<'a, T>: Freeze,

§

impl<'a, T> Send for StoreHookState<'a, T>
where StoreContextMut<'a, T>: Send,

§

impl<'a, T> Sync for StoreHookState<'a, T>
where StoreContextMut<'a, T>: Sync,

§

impl<'a, T> Unpin for StoreHookState<'a, T>
where StoreContextMut<'a, T>: Unpin,

§

impl<'a, T> UnsafeUnpin for StoreHookState<'a, T>

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> Pointee for T

Source§

type Pointer = u32

Source§

fn debug( pointer: <T as Pointee>::Pointer, f: &mut Formatter<'_>, ) -> Result<(), Error>

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
§

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