pub struct Table { /* private fields */ }Expand description
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.
Implementations§
Source§impl Table
impl Table
Sourcepub fn new(store: &Store, ty: TableType, init: Val) -> Result<Table>
pub fn new(store: &Store, ty: TableType, init: Val) -> Result<Table>
Creates a new Table with the given parameters.
store- a global cache to store information inty- 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.
§Errors
Returns an error if init does not match the element type of the table.
Sourcepub fn ty(&self) -> TableType
pub fn ty(&self) -> TableType
Returns the underlying type of this table, including its element type as well as the maximum/minimum lower bounds.
Sourcepub fn get(&self, index: u32) -> Option<Val>
pub fn get(&self, index: u32) -> Option<Val>
Returns the table element value at index.
Returns None if index is out of bounds.
Sourcepub fn set(&self, index: u32, val: Val) -> Result<()>
pub fn set(&self, index: u32, val: Val) -> Result<()>
Writes the val provided into index within this table.
§Errors
Returns an error if index is out of bounds or if val does not have
the right type to be stored in this table.
Sourcepub fn grow(&self, delta: u32, init: Val) -> Result<u32>
pub fn grow(&self, delta: u32, init: Val) -> Result<u32>
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.
§Errors
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.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Table
impl !RefUnwindSafe for Table
impl !Send for Table
impl !Sync for Table
impl Unpin for Table
impl !UnwindSafe for Table
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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