Struct wasmtime::Table [−][src]
#[repr(transparent)]pub struct Table(_);
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 reference type values rather than bytes. One of
the most common usages of a table is a function table for wasm modules (a
funcref
table), where each element has the ValType::FuncRef
type.
A Table
“belongs” to the store that it was originally created within
(either via Table::new
or via instantiating a Module
). Operations
on a Table
only work with the store it belongs to, and if another store
is passed in by accident then methods will panic.
Implementations
Creates a new Table
with the given parameters.
store
- the owner of the resultingTable
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.
Errors
Returns an error if init
does not match the element type of the table,
or if init
does not belong to the store
provided.
Panics
This function will panic when used with a Store
which has a ResourceLimiterAsync
(see also: Store::limiter_async
.
When using an async resource limiter, use Table::new_async
instead.
Examples
let engine = Engine::default();
let mut store = Store::new(&engine, ());
let ty = TableType::new(ValType::FuncRef, 2, None);
let table = Table::new(&mut store, ty, Val::FuncRef(None))?;
let module = Module::new(
&engine,
"(module
(table (import \"\" \"\") 2 funcref)
(func $f (result i32)
i32.const 10)
(elem (i32.const 0) (func $f))
)"
)?;
let instance = Instance::new(&mut store, &module, &[table.into()])?;
// ...
pub async fn new_async<T>(
store: impl AsContextMut<Data = T>,
ty: TableType,
init: Val
) -> Result<Table> where
T: Send,
This is supported on crate feature async
only.
pub async fn new_async<T>(
store: impl AsContextMut<Data = T>,
ty: TableType,
init: Val
) -> Result<Table> where
T: Send,
async
only.Async variant of Table::new
. You must use this variant with
Store
s which have a
ResourceLimiterAsync
.
Panics
This function will panic when used with a non-async
Store
Returns the underlying type of this table, including its element type as well as the maximum/minimum lower bounds.
Panics
Panics if store
does not own this table.
Returns the table element value at index
.
Returns None
if index
is out of bounds.
Panics
Panics if store
does not own this table.
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 or if init
does not belong to
store
.
Panics
Panics if store
does not own this table.
This function will panic when used with a Store
which has a ResourceLimiterAsync
(see also: Store::limiter_async
).
When using an async resource limiter, use Table::grow_async
instead.
pub async fn grow_async<T>(
&self,
store: impl AsContextMut<Data = T>,
delta: u32,
init: Val
) -> Result<u32> where
T: Send,
This is supported on crate feature async
only.
pub async fn grow_async<T>(
&self,
store: impl AsContextMut<Data = T>,
delta: u32,
init: Val
) -> Result<u32> where
T: Send,
async
only.Async variant of Table::grow
. Required when using a
ResourceLimiterAsync
.
Panics
This function will panic when used with a non-async
Store
.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Table
impl UnwindSafe for Table
Blanket Implementations
Mutably borrows from an owned value. Read more