Struct Global
pub(crate) struct Global(pub(crate) BackendGlobal);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: BackendGlobalImplementations§
§impl Global
impl Global
pub fn new(store: &mut impl AsStoreMut, val: Value) -> Global
pub fn new(store: &mut impl AsStoreMut, val: Value) -> Global
pub fn new_mut(store: &mut impl AsStoreMut, val: Value) -> Global
pub fn new_mut(store: &mut impl AsStoreMut, val: Value) -> Global
pub 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));pub fn get(&self, store: &mut impl AsStoreMut) -> Value
pub fn get(&self, store: &mut impl AsStoreMut) -> Value
pub 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 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 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§
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§
§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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§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 Q
impl<Q, K> Equivalent<K> for Q
§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 Q
impl<Q, K> Equivalent<K> for Q
§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 Q
impl<Q, K> Equivalent<K> for Q
§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<'a, T> ExportableWithGenerics<'a, (), ()> for Twhere
T: Exportable<'a> + Clone + 'static,
impl<'a, T> ExportableWithGenerics<'a, (), ()> for Twhere
T: Exportable<'a> + Clone + 'static,
§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> ⓘ
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 more§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>
Returns the layout of the type.
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Pointee for T
impl<T> Pointee for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Upcastable for T
impl<T> Upcastable for T
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_box(self: Box<T>) -> Box<dyn Any>
§impl<T> Upcastable for T
impl<T> Upcastable for T
§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
§fn upcast_any_box(self: Box<T>) -> Box<dyn Any>
fn upcast_any_box(self: Box<T>) -> Box<dyn Any>
upcast boxed dyn