Struct wasmtime::Table[][src]

pub struct Table { /* fields omitted */ }

A WebAssembly table, or an array of values.

Like Memory a table is an indexed array of values, but unlike Memory it’s an array of WebAssembly values rather than bytes. One of the most common usages of a table is a function table for wasm modules, where each element has the Func type.

Tables, like globals, are not threadsafe and can only be used on one thread. Tables can be grown in size and each element can be read/written.

Table and Clone

Tables are internally reference counted so you can clone a Table. The cloning process only performs a shallow clone, so two cloned Table instances are equivalent in their functionality.


impl Table[src]

pub fn new(store: &Store, ty: TableType, init: Val) -> Result<Table>[src]

Creates a new Table with the given parameters.

  • store - a global cache to store information in
  • ty - the type of this table, containing both the element type as well as the initial size and maximum size, if any.
  • init - the initial value to fill all table entries with, if the table starts with an initial size.


Returns an error if init does not match the element type of the table.

pub fn ty(&self) -> TableType[src]

Returns the underlying type of this table, including its element type as well as the maximum/minimum lower bounds.

pub fn get(&self, index: u32) -> Option<Val>[src]

Returns the table element value at index.

Returns None if index is out of bounds.

pub fn set(&self, index: u32, val: Val) -> Result<()>[src]

Writes the val provided into index within this table.


Returns an error if index is out of bounds or if val does not have the right type to be stored in this table.

pub fn size(&self) -> u32[src]

Returns the current size of this table.

pub fn grow(&self, delta: u32, init: Val) -> Result<u32>[src]

Grows the size of this table by delta more elements, initialization all new elements to init.

Returns the previous size of this table if successful.


Returns an error if the table cannot be grown by delta, for example if it would cause the table to exceed its maximum size. Also returns an error if init is not of the right type.

pub fn copy(
    dst_table: &Table,
    dst_index: u32,
    src_table: &Table,
    src_index: u32,
    len: u32
) -> Result<()>

Copy len elements from src_table[src_index..] into dst_table[dst_index..].


Returns an error if the range is out of bounds of either the source or destination tables.

pub fn fill(&self, dst: u32, val: Val, len: u32) -> Result<()>[src]

Fill table[dst..(dst + len)] with the given value.


Returns an error if

  • val is not of the same type as this table’s element type,

  • the region to be filled is out of bounds, or

  • val comes from a different Store from this table.

Trait Implementations

impl Clone for Table[src]

impl From<Table> for Extern[src]

Auto Trait Implementations

impl !RefUnwindSafe for Table

impl !Send for Table

impl !Sync for Table

impl Unpin for Table

impl !UnwindSafe for Table

Blanket Implementations

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

impl<T> Borrow<T> for T where
    T: ?Sized

impl<T> BorrowMut<T> for T where
    T: ?Sized

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 

impl<T> Pointable for T

type Init = T

The type for initializers.

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,