Struct wasmi::TableInstance

source ·
pub struct TableInstance { /* private fields */ }
Expand description

Runtime representation of a table.

A table is a array of untyped functions. It allows wasm code to call functions indirectly through a dynamic index into a table. For example, this allows emulating function pointers by way of table indices.

Table is created with an initial size but can be grown dynamically via grow method. Growth can be limited by an optional maximum size.

In future, a table might be extended to be able to hold not only functions but different types.

Implementations§

source§

impl TableInstance

source

pub fn alloc( initial_size: u32, maximum_size: Option<u32> ) -> Result<TableRef, Error>

Allocate a table instance.

The table allocated with initial size, specified by initial_size. Maximum size can be specified by maximum_size.

All table elements are allocated uninitialized.

Errors

Returns Err if initial_size is greater than maximum_size.

source

pub fn initial_size(&self) -> u32

Returns size this table was created with.

source

pub fn maximum_size(&self) -> Option<u32>

Returns maximum size TableInstance can grow to.

source

pub fn current_size(&self) -> u32

Returns current size of the table.

source

pub fn grow(&self, by: u32) -> Result<(), Error>

Increases the size of the table by given number of elements.

Errors

Returns Err if tried to allocate more elements than permited by limit.

source

pub fn get(&self, offset: u32) -> Result<Option<FuncRef>, Error>

Get the specific value in the table

source

pub fn set(&self, offset: u32, value: Option<FuncRef>) -> Result<(), Error>

Set the table element to the specified function.

Trait Implementations§

source§

impl Debug for TableInstance

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Downcast for Twhere T: Any,

source§

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

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

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.