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 !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