pub struct Instance { }
Available on crate features runtime
and component-model
only.
An instantiated component.
This type represents an instantiated Component
. Instances have exports which can be accessed through functions such as Instance::get_func
or Instance::get_export
. Instances are owned by a Store
and all methods require a handle to the store.
Component instances are created through Linker::instantiate
and its family of methods.
This type is similar to the core wasm version wasmtime::Instance
except that it represents an instantiated component instead of an instantiated module.
Looks up an exported function by name within this Instance
.
The store
argument provided must be the store that this instance lives within and the name
argument is the lookup key by which to find the exported function. If the function is found then Some
is returned and otherwise None
is returned.
The name
here can be a string such as &str
or it can be a ComponentExportIndex
which is loaded prior from a Component
.
Panics if store
does not own this instance.
Looking up a function which is exported from the root of a component:
use wasmtime::{Engine, Store};
use wasmtime::component::{Component, Linker};
let engine = Engine::default();
let component = Component::new(
&engine,
r#"
(component
(core module $m
(func (export "f"))
)
(core instance $i (instantiate $m))
(func (export "f")
(canon lift (core func $i "f")))
)
"#,
)?;
let mut store = Store::new(&engine, ());
let instance = Linker::new(&engine).instantiate(&mut store, &component)?;
let func = instance.get_func(&mut store, "f").unwrap();
let export = component.get_export_index(None, "f").unwrap();
let func = instance.get_func(&mut store, &export).unwrap();
Looking up a function which is exported from a nested instance:
use wasmtime::{Engine, Store};
use wasmtime::component::{Component, Linker};
let engine = Engine::default();
let component = Component::new(
&engine,
r#"
(component
(core module $m
(func (export "f"))
)
(core instance $i (instantiate $m))
(func $f
(canon lift (core func $i "f")))
(instance $i
(export "f" (func $f)))
(export "i" (instance $i))
)
"#,
)?;
let instance_index = component.get_export_index(None, "i").unwrap();
let func_index = component.get_export_index(Some(&instance_index), "f").unwrap();
let mut store = Store::new(&engine, ());
let instance = Linker::new(&engine).instantiate(&mut store, &component)?;
let func = instance.get_func(&mut store, &func_index).unwrap();
let instance_index = instance.get_export_index(&mut store, None, "i").unwrap();
let func_index = instance.get_export_index(&mut store, Some(&instance_index), "f").unwrap();
let func = instance.get_func(&mut store, &func_index).unwrap();
Source
Looks up an exported Func
value by name and with its type.
This function is a convenience wrapper over Instance::get_func
and Func::typed
. For more information see the linked documentation.
Returns an error if name
isn’t a function export or if the export’s type did not match Params
or Results
Panics if store
does not own this instance.
Looks up an exported module by name within this Instance
.
The store
argument provided must be the store that this instance lives within and the name
argument is the lookup key by which to find the exported module. If the module is found then Some
is returned and otherwise None
is returned.
The name
here can be a string such as &str
or it can be a ComponentExportIndex
which is loaded prior from a Component
.
For some examples see Instance::get_func
for loading values from a component.
Panics if store
does not own this instance.
Looks up an exported resource type by name within this Instance
.
The store
argument provided must be the store that this instance lives within and the name
argument is the lookup key by which to find the exported resource. If the resource is found then Some
is returned and otherwise None
is returned.
The name
here can be a string such as &str
or it can be a ComponentExportIndex
which is loaded prior from a Component
.
For some examples see Instance::get_func
for loading values from a component.
Panics if store
does not own this instance.
Returns the InstancePre
that was used to create this instance.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4