GcPtr

Struct GcPtr 

Source
pub struct GcPtr<T> { /* private fields */ }

Implementations§

Source§

impl<T> GcPtr<T>

Source

pub unsafe fn from_raw(ptr: *const T) -> Self

§Safety
  • ptr must be non-null and correctly aligned for T.
  • ptr must point to a valid instance of T allocated by RunMat’s GC and remain alive for the duration of all uses of the returned GcPtr.
  • The caller is responsible for upholding aliasing and lifetime invariants when this pointer is dereferenced via Deref/DerefMut.
Source

pub fn null() -> Self

Source

pub fn is_null(&self) -> bool

Source

pub unsafe fn as_raw(&self) -> *const T

§Safety

The returned raw pointer may become invalid if the underlying object is collected by the GC. The caller must ensure the object is kept alive (e.g., via rooting) for any dereference, and must respect aliasing and lifetime rules when using the pointer.

Source

pub unsafe fn as_raw_mut(&self) -> *mut T

§Safety

Returns a mutable raw pointer to the underlying object. The caller must ensure exclusive access when mutating through this pointer, that the object outlives all uses, and that aliasing/lifetime invariants are respected. Mutating a collected or shared object is undefined behavior.

Trait Implementations§

Source§

impl<T: Clone> Clone for GcPtr<T>

Source§

fn clone(&self) -> GcPtr<T>

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<T: Debug> Debug for GcPtr<T>

Source§

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

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

impl<T> Deref for GcPtr<T>

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<T> DerefMut for GcPtr<T>

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl<T: Display> Display for GcPtr<T>

Source§

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

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

impl<T: Hash> Hash for GcPtr<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 GcPtr<T>

Source§

fn eq(&self, other: &Self) -> 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<T: Copy> Copy for GcPtr<T>

Source§

impl<T: Eq> Eq for GcPtr<T>

Source§

impl<T: Send> Send for GcPtr<T>

Source§

impl<T: Sync> Sync for GcPtr<T>

Auto Trait Implementations§

§

impl<T> Freeze for GcPtr<T>

§

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

§

impl<T> Unpin for GcPtr<T>
where T: Unpin,

§

impl<T> UnwindSafe for GcPtr<T>

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<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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.