Struct wasmer_ruby::Wasmer::Instance
source · pub struct Instance;
Expand description
A WebAssembly instance is a stateful, executable instance of a
WebAssembly Module
.
Instance objects contain all the exported WebAssembly functions, memories, tables and globals that allow interacting with WebAssembly.
Specification: https://webassembly.github.io/spec/core/exec/runtime.html#module-instances
Examples
Example without an import object. The following creates a module with a sum exported function that sum two integers.
module_ = Wasmer::Module.new(
Wasmer::Store.new,
(<<~WAST)
(module
(type (func (param i32 i32) (result i32)))
(func (type 0)
local.get 0
local.get 1
i32.add)
(export "sum" (func 0)))
WAST
)
instance = Wasmer::Instance.new module_, nil
assert { instance.exports.sum.(1, 2) == 3 }
Example with an import object. The following creates a module
that (i) imports a sum function from the math
namespace, and
(ii) exports an add_one
function that adds 1 to any given
integer (by using the math.sum
function).
def sum(x, y)
x + y
end
store = Wasmer::Store.new
module_ = Wasmer::Module.new(
store,
(<<~WAST)
(module
(import "math" "sum" (func $sum (param i32 i32) (result i32)))
(func (export "add_one") (param i32) (result i32)
local.get 0
i32.const 1
call $sum))
WAST
)
import_object = Wasmer::ImportObject.new
import_object.register(
"math",
{
:sum => Wasmer::Function.new(
store,
method(:sum),
Wasmer::FunctionType.new([Wasmer::Type::I32, Wasmer::Type::I32], [Wasmer::Type::I32])
)
}
)
instance = Wasmer::Instance.new module_, import_object
assert { instance.exports.add_one.(1) == 2 }
Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for Instance
impl Send for Instance
impl Sync for Instance
impl Unpin for Instance
impl UnwindSafe for Instance
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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