pub struct Global(/* private fields */);
Expand description
A WebAssembly global
instance.
A global instance is the runtime representation of a global variable. It consists of an individual value and a flag indicating whether it is mutable.
Spec: https://webassembly.github.io/spec/core/exec/runtime.html#global-instances
Implementations§
source§impl Global
impl Global
sourcepub fn new(store: &mut impl AsStoreMut, val: Value) -> Self
pub fn new(store: &mut impl AsStoreMut, val: Value) -> Self
sourcepub fn new_mut(store: &mut impl AsStoreMut, val: Value) -> Self
pub fn new_mut(store: &mut impl AsStoreMut, val: Value) -> Self
sourcepub fn ty(&self, store: &impl AsStoreRef) -> GlobalType
pub fn ty(&self, store: &impl AsStoreRef) -> GlobalType
Returns the GlobalType
of the Global
.
§Example
let c = Global::new(&mut store, Value::I32(1));
let v = Global::new_mut(&mut store, Value::I64(1));
assert_eq!(c.ty(&mut store), GlobalType::new(Type::I32, Mutability::Const));
assert_eq!(v.ty(&mut store), GlobalType::new(Type::I64, Mutability::Var));
sourcepub fn get(&self, store: &mut impl AsStoreMut) -> Value
pub fn get(&self, store: &mut impl AsStoreMut) -> Value
sourcepub fn set(
&self,
store: &mut impl AsStoreMut,
val: Value,
) -> Result<(), RuntimeError>
pub fn set( &self, store: &mut impl AsStoreMut, val: Value, ) -> Result<(), RuntimeError>
Sets a custom value Value
to the runtime Global.
§Example
let g = Global::new_mut(&mut store, Value::I32(1));
assert_eq!(g.get(&mut store), Value::I32(1));
g.set(&mut store, Value::I32(2));
assert_eq!(g.get(&mut store), Value::I32(2));
§Errors
Trying to mutate a immutable global will raise an error:
ⓘ
let g = Global::new(&mut store, Value::I32(1));
g.set(&mut store, Value::I32(2)).unwrap();
Trying to set a value of a incompatible type will raise an error:
ⓘ
let g = Global::new(&mut store, Value::I32(1));
// This results in an error: `RuntimeError`.
g.set(&mut store, Value::I64(2)).unwrap();
sourcepub fn is_from_store(&self, store: &impl AsStoreRef) -> bool
pub fn is_from_store(&self, store: &impl AsStoreRef) -> bool
Checks whether this Global
can be used with the given context.
Trait Implementations§
source§impl<'a> Exportable<'a> for Global
impl<'a> Exportable<'a> for Global
source§fn get_self_from_extern(_extern: &'a Extern) -> Result<&'a Self, ExportError>
fn get_self_from_extern(_extern: &'a Extern) -> Result<&'a Self, ExportError>
Implementation of how to get the export corresponding to the implementing type
from an
Instance
by name.impl Eq for Global
impl StructuralPartialEq for Global
Auto Trait Implementations§
impl Freeze for Global
impl RefUnwindSafe for Global
impl Send for Global
impl Sync for Global
impl Unpin for Global
impl UnwindSafe for Global
Blanket Implementations§
source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
source§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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 moresource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> Upcastable for T
impl<T> Upcastable for T
source§fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
upcast ref
source§fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
upcast mut ref