pub struct ArrayRefPre { /* private fields */ }Expand description
An allocator for a particular Wasm GC array type.
Every ArrayRefPre is associated with a particular Store
and a particular ArrayType.
Reusing an allocator across many allocations amortizes some per-type runtime
overheads inside Wasmtime. An ArrayRefPre is to ArrayRefs as an
InstancePre is to Instances.
§Example
use wasmtime::*;
let mut config = Config::new();
config.wasm_function_references(true);
config.wasm_gc(true);
let engine = Engine::new(&config)?;
let mut store = Store::new(&engine, ());
// Define an array type.
let array_ty = ArrayType::new(
   store.engine(),
   FieldType::new(Mutability::Var, ValType::I32.into()),
);
// Create an allocator for the array type.
let allocator = ArrayRefPre::new(&mut store, array_ty);
{
    let mut scope = RootScope::new(&mut store);
    // Allocate a bunch of instances of our array type using the same
    // allocator! This is faster than creating a new allocator for each
    // instance we want to allocate.
    for i in 0..10 {
        let len = 42;
        let elem = Val::I32(36);
        ArrayRef::new(&mut scope, &allocator, &elem, len)?;
    }
}Implementations§
Source§impl ArrayRefPre
 
impl ArrayRefPre
Sourcepub fn new(store: impl AsContextMut, ty: ArrayType) -> ArrayRefPre
 
pub fn new(store: impl AsContextMut, ty: ArrayType) -> ArrayRefPre
Create a new ArrayRefPre that is associated with the given store
and type.
Auto Trait Implementations§
impl Freeze for ArrayRefPre
impl !RefUnwindSafe for ArrayRefPre
impl Send for ArrayRefPre
impl Sync for ArrayRefPre
impl Unpin for ArrayRefPre
impl !UnwindSafe for ArrayRefPre
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
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
 
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
 
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
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> ⓘ
Converts 
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> ⓘ
Converts 
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