#[repr(C)]
pub struct Global { }
Available on crate feature runtime
only.
A WebAssembly global
value which can be read and written to.
A global
in WebAssembly is sort of like a global variable within an Instance
. The global.get
and global.set
instructions will modify and read global values in a wasm module. Globals can either be imported or exported from wasm modules.
A Global
“belongs” to the store that it was originally created within (either via Global::new
or via instantiating a Module
). Operations on a Global
only work with the store it belongs to, and if another store is passed in by accident then methods will panic.
Creates a new WebAssembly global
value with the provide type ty
and initial value val
.
The store
argument will be the owner of the Global
returned. Using the returned Global
other items in the store may access this global. For example this could be provided as an argument to Instance::new
or Linker::define
.
Returns an error if the ty
provided does not match the type of the value val
, or if val
comes from a different store than store
.
let engine = Engine::default();
let mut store = Store::new(&engine, ());
let ty = GlobalType::new(ValType::I32, Mutability::Const);
let i32_const = Global::new(&mut store, ty, 1i32.into())?;
let ty = GlobalType::new(ValType::F64, Mutability::Var);
let f64_mut = Global::new(&mut store, ty, 2.0f64.into())?;
let module = Module::new(
&engine,
"(module
(global (import \"\" \"i32-const\") i32)
(global (import \"\" \"f64-mut\") (mut f64))
)"
)?;
let mut linker = Linker::new(&engine);
linker.define(&store, "", "i32-const", i32_const)?;
linker.define(&store, "", "f64-mut", f64_mut)?;
let instance = linker.instantiate(&mut store, &module)?;
Source
Returns the underlying type of this global
.
Panics if store
does not own this global.
Returns the current Val
of this global.
Panics if store
does not own this global.
Attempts to set the current value of this global to Val
.
Returns an error if this global has a different type than Val
, if it’s not a mutable global, or if val
comes from a different store than the one provided.
Panics if store
does not own this global.
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