pub struct ExnRefPre { /* private fields */ }Expand description
An allocator for a particular Wasm GC exception type.
Every ExnRefPre is associated with a particular
Store and a particular
ExnType.
Reusing an allocator across many allocations amortizes some
per-type runtime overheads inside Wasmtime. An ExnRefPre is to
ExnRefs 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 exn type.
let exn_ty = ExnType::new(
store.engine(),
[ValType::I32],
)?;
// Create an allocator for the exn type.
let allocator = ExnRefPre::new(&mut store, exn_ty.clone());
// Create a tag instance to associate with our exception objects.
let tag = Tag::new(&mut store, &exn_ty.tag_type()).unwrap();
{
let mut scope = RootScope::new(&mut store);
// Allocate a bunch of instances of our exception 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 {
ExnRef::new(&mut scope, &allocator, &tag, &[Val::I32(i)])?;
}
}Implementations§
Auto Trait Implementations§
impl Freeze for ExnRefPre
impl !RefUnwindSafe for ExnRefPre
impl Send for ExnRefPre
impl Sync for ExnRefPre
impl Unpin for ExnRefPre
impl UnsafeUnpin for ExnRefPre
impl !UnwindSafe for ExnRefPre
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