wasmi

Struct Store

source
pub struct Store<T> { /* private fields */ }
Expand description

The store that owns all data associated to Wasm modules.

Implementations§

source§

impl<T> Store<T>

source

pub fn new(engine: &Engine, data: T) -> Self

Creates a new store.

source

pub fn engine(&self) -> &Engine

Returns the Engine that this store is associated with.

source

pub fn data(&self) -> &T

Returns a shared reference to the user provided data owned by this Store.

source

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

Returns an exclusive reference to the user provided data owned by this Store.

source

pub fn into_data(self) -> T

Consumes self and returns its user provided data.

source

pub fn limiter( &mut self, limiter: impl FnMut(&mut T) -> &mut dyn ResourceLimiter + Send + Sync + 'static, )

Installs a function into the Store that will be called with the user data type T to retrieve a ResourceLimiter any time a limited, growable resource such as a linear memory or table is grown.

source

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

Returns the remaining fuel of the Store if fuel metering is enabled.

§Note

Enable fuel metering via Config::consume_fuel.

§Errors

If fuel metering is disabled.

source

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

Sets the remaining fuel of the Store to value if fuel metering is enabled.

§Note

Enable fuel metering via Config::consume_fuel.

§Errors

If fuel metering is disabled.

source

pub fn call_hook( &mut self, hook: impl FnMut(&mut T, CallHook) -> Result<(), Error> + Send + Sync + 'static, )

Sets a callback function that is executed whenever a WebAssembly function is called from the host or a host function is called from WebAssembly, or these functions return.

The function is passed a &mut T to the underlying store, and a CallHook. CallHook can be used to find out what kind of function is being called or returned from.

The callback can either return Ok(()) or an Err with an Error. If an error is returned, it is returned to the host caller. If there are nested calls, only the most recent host caller receives the error and it is not propagated further automatically. The hook may be invoked again as new functions are called and returned from.

Trait Implementations§

source§

impl<T> AsContext for Store<T>

source§

type Data = T

The user state associated with the Store, aka the T in Store<T>.
source§

fn as_context(&self) -> StoreContext<'_, Self::Data>

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

impl<T> AsContextMut for Store<T>

source§

fn as_context_mut(&mut self) -> StoreContextMut<'_, Self::Data>

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

impl<T: Debug> Debug for Store<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T> Default for Store<T>
where T: Default,

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Store<T>
where T: Freeze,

§

impl<T> !RefUnwindSafe for Store<T>

§

impl<T> Send for Store<T>
where T: Send,

§

impl<T> Sync for Store<T>
where T: Sync,

§

impl<T> Unpin for Store<T>
where T: Unpin,

§

impl<T> !UnwindSafe for Store<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> Downcast for T
where T: Any,

source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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 = 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.