Struct wasmtime_runtime::TypedGcRef

source ·
pub struct TypedGcRef<T> { /* private fields */ }
Expand description

A GC reference to a heap object of concrete type T.

Create typed GC refs via VMGcRef::into_typed and VMGcRef::as_typed, as well as via their unchecked equivalents VMGcRef::into_typed_unchecked and VMGcRef::as_typed_unchecked.

Implementations§

source§

impl<T> TypedGcRef<T>
where T: GcHeapObject,

source

pub fn clone(&self, gc_store: &mut GcStore) -> Self

Clone this VMGcRef, running any GC barriers as necessary.

source

pub fn drop(self, gc_store: &mut GcStore)

Explicitly drop this GC reference, running any GC barriers as necessary.

source

pub fn unchecked_copy(&self) -> Self

Copy this GC reference without running the GC’s clone barriers.

Prefer calling clone(&mut GcStore) instead! This is mostly an internal escape hatch for collector implementations.

Failure to run GC barriers when they would otherwise be necessary can lead to leaks, panics, and wrong results. It cannot lead to memory unsafety, however.

source§

impl<T> TypedGcRef<T>

source

pub fn as_untyped(&self) -> &VMGcRef

Get the untyped version of this GC reference.

Trait Implementations§

source§

impl<T: Debug> Debug for TypedGcRef<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T> From<TypedGcRef<T>> for VMGcRef

source§

fn from(value: TypedGcRef<T>) -> Self

Converts to this type from the input type.
source§

impl<T: Hash> Hash for TypedGcRef<T>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<T: PartialEq> PartialEq for TypedGcRef<T>

source§

fn eq(&self, other: &TypedGcRef<T>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<T: Eq> Eq for TypedGcRef<T>

source§

impl<T> StructuralPartialEq for TypedGcRef<T>

Auto Trait Implementations§

§

impl<T> Freeze for TypedGcRef<T>

§

impl<T> RefUnwindSafe for TypedGcRef<T>
where T: RefUnwindSafe,

§

impl<T> !Send for TypedGcRef<T>

§

impl<T> !Sync for TypedGcRef<T>

§

impl<T> Unpin for TypedGcRef<T>

§

impl<T> UnwindSafe for TypedGcRef<T>
where T: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.