pub struct StructRefPre { /* private fields */ }Expand description
An allocator for a particular Wasm GC struct type.
Every StructRefPre is associated with a particular
Store and a particular StructType.
Reusing an allocator across many allocations amortizes some per-type runtime
overheads inside Wasmtime. A StructRefPre is to StructRefs 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 a struct type.
let struct_ty = StructType::new(
store.engine(),
[FieldType::new(Mutability::Var, StorageType::I8)],
)?;
// Create an allocator for the struct type.
let allocator = StructRefPre::new(&mut store, struct_ty);
{
let mut scope = RootScope::new(&mut store);
// Allocate a bunch of instances of our struct 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 {
StructRef::new(&mut scope, &allocator, &[Val::I32(i)])?;
}
}Implementations§
Source§impl StructRefPre
impl StructRefPre
Sourcepub fn new(store: impl AsContextMut, ty: StructType) -> Self
Available on crate features runtime and gc only.
pub fn new(store: impl AsContextMut, ty: StructType) -> Self
runtime and gc only.Create a new StructRefPre that is associated with the given store
and type.
Auto Trait Implementations§
impl Freeze for StructRefPre
impl !RefUnwindSafe for StructRefPre
impl Send for StructRefPre
impl Sync for StructRefPre
impl Unpin for StructRefPre
impl !UnwindSafe for StructRefPre
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
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