pub struct Global(pub(crate) Global);
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
Tuple Fields§
§0: Global
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
sourcefn from_value(
store: &mut impl AsStoreMut,
val: Value,
mutability: Mutability
) -> Result<Self, RuntimeError>
fn from_value( store: &mut impl AsStoreMut, val: Value, mutability: Mutability ) -> Result<Self, RuntimeError>
Create a Global
with the initial value Value
and the provided Mutability
.
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();
pub(crate) fn from_vm_extern( store: &mut impl AsStoreMut, vm_extern: InternalStoreHandle<VMGlobal> ) -> Self
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.
pub(crate) fn to_vm_extern(&self) -> VMExtern
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.source§impl PartialEq<Global> for Global
impl PartialEq<Global> for Global
impl Eq for Global
impl StructuralPartialEq for Global
Auto Trait Implementations§
impl RefUnwindSafe for Global
impl Send for Global
impl Sync for Global
impl Unpin for Global
impl UnwindSafe for Global
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
§impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere
W: DeserializeWith<F, T, D>,
D: Fallible + ?Sized,
F: ?Sized,
impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,
§fn deserialize(
&self,
deserializer: &mut D
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D ) -> Result<With<T, W>, <D as Fallible>::Error>
Deserializes using the given deserializer
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§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<'a, T> ExportableWithGenerics<'a, (), ()> for Twhere
T: Exportable<'a> + Clone + 'static,
impl<'a, T> ExportableWithGenerics<'a, (), ()> for Twhere T: Exportable<'a> + Clone + 'static,
source§fn get_self_from_extern_with_generics(
_extern: &'a Extern
) -> Result<T, ExportError>
fn get_self_from_extern_with_generics( _extern: &'a Extern ) -> Result<T, ExportError>
Get an export with the given generics.
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§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.
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Upcastable for Twhere
T: Any + Send + Sync + 'static,
impl<T> Upcastable for Twhere T: Any + Send + Sync + 'static,
§fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
upcast ref
§fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
upcast mut ref