StoreContextMut

Struct StoreContextMut 

Source
pub struct StoreContextMut<'a, T>(/* private fields */)
where
    T: 'static;
Expand description

A temporary handle to a &mut Store<T>.

This type is suitable for AsContextMut or AsContext trait bounds on methods if desired. For more information, see Store.

Implementations§

Source§

impl<'a, T> StoreContextMut<'a, T>

Source

pub async fn gc_async(&mut self, why: Option<&GcHeapOutOfMemory<()>>)
where T: Send + 'static,

Perform garbage collection of ExternRefs.

Same as Store::gc.

This method is only available when the gc Cargo feature is enabled.

Source

pub fn epoch_deadline_async_yield_and_update(&mut self, delta: u64)

Configures epoch-deadline expiration to yield to the async caller and the update the deadline.

For more information see Store::epoch_deadline_async_yield_and_update.

Source§

impl<'a, T> StoreContextMut<'a, T>

Source

pub fn data(&self) -> &T

Access the underlying data owned by this Store.

Same as Store::data.

Source

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

Access the underlying data owned by this Store.

Same as Store::data_mut.

Source

pub fn engine(&self) -> &Engine

Returns the underlying Engine this store is connected to.

Source

pub fn gc(&mut self, why: Option<&GcHeapOutOfMemory<()>>)

Perform garbage collection of ExternRefs.

Same as Store::gc.

This method is only available when the gc Cargo feature is enabled.

Source

pub fn get_fuel(&self) -> Result<u64, Error>

Returns remaining fuel in this store.

For more information see Store::get_fuel

Source

pub fn set_fuel(&mut self, fuel: u64) -> Result<(), Error>

Set the amount of fuel in this store.

For more information see Store::set_fuel

Source

pub fn fuel_async_yield_interval( &mut self, interval: Option<u64>, ) -> Result<(), Error>

Configures this Store to periodically yield while executing futures.

For more information see Store::fuel_async_yield_interval

Source

pub fn set_epoch_deadline(&mut self, ticks_beyond_current: u64)

Sets the epoch deadline to a certain number of ticks in the future.

For more information see Store::set_epoch_deadline.

Source

pub fn epoch_deadline_trap(&mut self)

Configures epoch-deadline expiration to trap.

For more information see Store::epoch_deadline_trap.

Source

pub fn throw<R>( &mut self, exception: Rooted<ExnRef>, ) -> Result<R, ThrownException>

Set an exception as the currently pending exception, and return an error that propagates the throw.

See Store::throw for more details.

Source

pub fn take_pending_exception(&mut self) -> Option<Rooted<ExnRef>>

Take the currently pending exception, if any, and return it, removing it from the “pending exception” slot.

See Store::take_pending_exception for more details.

Source

pub fn has_pending_exception(&self) -> bool

Tests whether there is a pending exception.

See Store::has_pending_exception for more details.

Source§

impl<T> StoreContextMut<'_, T>

Source

pub fn spawn( self, task: impl AccessorTask<T, HasSelf<T>, Result<(), Error>>, ) -> JoinHandle
where T: 'static,

Spawn a background task to run as part of this instance’s event loop.

The task will receive an &Accessor<U> and run concurrently with any other tasks in progress for the instance.

Note that the task will only make progress if and when the event loop for this instance is run.

The returned [SpawnHandle] may be used to cancel the task.

Source

pub async fn run_concurrent<R>( self, fun: impl AsyncFnOnce(&Accessor<T>) -> R, ) -> Result<R, Error>
where T: Send + 'static,

Run the specified closure fun to completion as part of this store’s event loop.

This will run fun as part of this store’s event loop until it yields a result. fun is provided an Accessor, which provides controlled access to the store and its data.

This function can be used to invoke Func::call_concurrent for example within the async closure provided here.

§Example
store.run_concurrent(async |accessor| -> wasmtime::Result<_> {
   let resource = accessor.with(|mut access| access.get().table.push(MyResource(42)))?;
   let (another_resource,) = foo.call_concurrent(accessor, (resource,)).await?.0;
   let value = accessor.with(|mut access| access.get().table.delete(another_resource))?;
   bar.call_concurrent(accessor, (value.0,)).await?;
   Ok(())
}).await??;

Trait Implementations§

Source§

impl<T> AsContext for StoreContextMut<'_, T>
where T: 'static,

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

impl<T> AsContextMut for StoreContextMut<'_, T>
where T: 'static,

Source§

fn as_context_mut(&mut self) -> StoreContextMut<'_, T>

Returns the store context that this type provides access to.
Source§

impl<'a, T> From<&'a mut T> for StoreContextMut<'a, <T as AsContext>::Data>
where T: AsContextMut,

Source§

fn from(t: &'a mut T) -> StoreContextMut<'a, <T as AsContext>::Data>

Converts to this type from the input type.
Source§

impl<'a, T> From<StoreContextMut<'a, T>> for StoreContext<'a, T>
where T: 'static,

Source§

fn from(store: StoreContextMut<'a, T>) -> StoreContext<'a, T>

Converts to this type from the input type.
Source§

impl<I, T> Index<I> for StoreContextMut<'_, T>
where StoreOpaque: Index<I>,

Source§

type Output = <StoreOpaque as Index<I>>::Output

The returned type after indexing.
Source§

fn index(&self, index: I) -> &<StoreContextMut<'_, T> as Index<I>>::Output

Performs the indexing (container[index]) operation. Read more
Source§

impl<I, T> IndexMut<I> for StoreContextMut<'_, T>
where StoreOpaque: IndexMut<I>,

Source§

fn index_mut( &mut self, index: I, ) -> &mut <StoreContextMut<'_, T> as Index<I>>::Output

Performs the mutable indexing (container[index]) operation. Read more

Auto Trait Implementations§

§

impl<'a, T> Freeze for StoreContextMut<'a, T>

§

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

§

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

§

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

§

impl<'a, T> Unpin for StoreContextMut<'a, T>

§

impl<'a, T> !UnwindSafe for StoreContextMut<'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