Struct UntypedGcRef

Source
#[repr(C)]
pub struct UntypedGcRef { /* private fields */ }
Expand description

A untyped garbage collected pointer to a value, you can think of it as void* pointer but managed by GC.

This is the equivalent of a garbage collected smart-pointer.

The smart pointer is simply a guarantee to the garbage collector that this points to a garbage collected object with the correct header, and not some arbitrary bits that you’ve decided to heap allocate.

Implementations§

Source§

impl UntypedGcRef

Source

pub fn get(&self) -> *mut u8

Returns data part of GC object. That is part of allocation after heap object header.

Source

pub fn is(&self, index: GCInfoIndex) -> bool

Returns true if object has the same index.

Source

pub fn cast<T>(self) -> Option<GcRef<T>>
where T: GCInfoTrait<T> + TraceTrait + FinalizeTrait<T> + 'static,

Returns Some(T) if T::index() is the same as in this object.

Source

pub unsafe fn cast_unchecked<T>(self) -> GcRef<T>
where T: GCInfoTrait<T> + TraceTrait + FinalizeTrait<T> + 'static,

Unchecked cast withouth verifying indexes.

Trait Implementations§

Source§

impl Clone for UntypedGcRef

Source§

fn clone(&self) -> UntypedGcRef

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for UntypedGcRef

Source§

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

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

impl PartialEq for UntypedGcRef

Source§

fn eq(&self, other: &UntypedGcRef) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Pointer for UntypedGcRef

Source§

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

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

impl TraceTrait for UntypedGcRef

Source§

fn trace(&self, vis: &mut Visitor)

Function invoking the tracing for an object of type T. Read more
Source§

extern "C" fn trace_(vis: *mut Visitor, this: *const u8)

trace_ method is used for C FFI safety.
Source§

fn get_trace_descriptor(this: *const u8) -> TraceDescriptor

Returns trace descriptor for type that implements this trait. Not recommended to override it.
Source§

impl Copy for UntypedGcRef

Source§

impl Eq for UntypedGcRef

Auto Trait Implementations§

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> Any for T
where T: Any,

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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.