Struct gluon_vm::gc::GcPtr

source ·
pub struct GcPtr<T: ?Sized>(/* private fields */);
Expand description

A pointer to a garbage collected value.

It is only safe to access data through a GcPtr if the value is rooted (stored in a place where the garbage collector will find it during the mark phase).

Implementations§

source§

impl<T: ?Sized> GcPtr<T>

source

pub unsafe fn as_mut(&mut self) -> &mut T

Unsafe as it is up to the caller to ensure that this pointer is not referenced somewhere else

source

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

Unsafe as ptr must have been allocted by this garbage collector

source

pub fn generation(&self) -> Generation

source

pub fn poly_tag(&self) -> Option<&InternedStr>

source

pub fn field_map(&self) -> &FnvMap<InternedStr, VmIndex>

source

pub fn field_names(&self) -> &Arc<[InternedStr]>

source

pub fn ptr_eq(&self, other: &GcPtr<T>) -> bool

source

pub unsafe fn unrooted(&self) -> Self

source

pub fn as_lifetime(&self) -> &()

source

pub unsafe fn cast<U>(ptr: Self) -> GcPtr<U>

source§

impl<'a, T: Trace + Send + Sync + 'a> GcPtr<T>

source

pub fn as_trace(self) -> GcPtr<dyn Trace + Send + Sync + 'a>

Coerces self to a Trace trait object

source§

impl GcPtr<str>

source

pub fn as_trace_string(self) -> GcPtr<dyn Trace + Send + Sync>

Coerces self to a Trace trait object

source§

impl GcPtr<ValueStr>

source

pub fn from_utf8( array: GcRef<'_, ValueArray> ) -> Result<GcRef<'_, ValueStr>, ()>

source

pub unsafe fn from_utf8_unchecked(array: GcPtr<ValueArray>) -> GcPtr<ValueStr>

Trait Implementations§

source§

impl<T: ?Sized> Borrow<T> for GcPtr<T>

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T: ?Sized> CloneUnrooted for GcPtr<T>

§

type Value = GcPtr<T>

source§

unsafe fn clone_unrooted(&self) -> Self

Creates a clone of the value that is not rooted. To ensure safety the value must be forgotten or rooted before the next garbage collection
source§

impl<T: ?Sized> CopyUnrooted for GcPtr<T>

source§

unsafe fn copy_unrooted(&self) -> Self

source§

impl<T: ?Sized + 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: ?Sized> Deref for GcPtr<T>

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &T

Dereferences the value.
source§

impl<'de, 'gc, T> DeserializeState<'de, DeSeed<'gc>> for GcPtr<T>
where T: Trace + PostDeserialize + 'static + DeserializeState<'de, DeSeed<'gc>>,

source§

fn deserialize_state<D>( seed: &mut DeSeed<'gc>, deserializer: D ) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserializes Self using seed and the deserializer
source§

impl<'de, 'gc> DeserializeState<'de, DeSeed<'gc>> for GcPtr<ValueStr>

source§

fn deserialize_state<D>( seed: &mut DeSeed<'gc>, deserializer: D ) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserializes Self using seed and the deserializer
source§

impl<T: ?Sized + Display> Display for GcPtr<T>

source§

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

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

impl<'gc> From<&'gc GcPtr<Box<dyn Userdata>>> for Variants<'gc>

source§

fn from(v: &'gc GcPtr<Box<dyn Userdata>>) -> Self

Converts to this type from the input type.
source§

impl<'gc> From<&'gc GcPtr<ClosureData>> for Variants<'gc>

source§

fn from(v: &'gc GcPtr<ClosureData>) -> Self

Converts to this type from the input type.
source§

impl<'gc> From<&'gc GcPtr<DataStruct>> for Variants<'gc>

source§

fn from(v: &'gc GcPtr<DataStruct>) -> Self

Converts to this type from the input type.
source§

impl<'gc> From<&'gc GcPtr<ExternFunction>> for Variants<'gc>

source§

fn from(v: &'gc GcPtr<ExternFunction>) -> Self

Converts to this type from the input type.
source§

impl<'gc> From<&'gc GcPtr<PartialApplicationData>> for Variants<'gc>

source§

fn from(v: &'gc GcPtr<PartialApplicationData>) -> Self

Converts to this type from the input type.
source§

impl<'gc> From<&'gc GcPtr<Thread>> for Variants<'gc>

source§

fn from(v: &'gc GcPtr<Thread>) -> Self

Converts to this type from the input type.
source§

impl<'gc> From<&'gc GcPtr<ValueArray>> for Variants<'gc>

source§

fn from(v: &'gc GcPtr<ValueArray>) -> Self

Converts to this type from the input type.
source§

impl<'gc> From<&'gc GcPtr<ValueStr>> for Variants<'gc>

source§

fn from(v: &'gc GcPtr<ValueStr>) -> Self

Converts to this type from the input type.
source§

impl From<GcPtr<Box<dyn Userdata>>> for Value

source§

fn from(v: GcPtr<Box<dyn Userdata>>) -> Value

Converts to this type from the input type.
source§

impl From<GcPtr<ClosureData>> for Value

source§

fn from(v: GcPtr<ClosureData>) -> Value

Converts to this type from the input type.
source§

impl From<GcPtr<DataStruct>> for Value

source§

fn from(v: GcPtr<DataStruct>) -> Value

Converts to this type from the input type.
source§

impl From<GcPtr<ExternFunction>> for Value

source§

fn from(v: GcPtr<ExternFunction>) -> Value

Converts to this type from the input type.
source§

impl From<GcPtr<PartialApplicationData>> for Value

source§

fn from(v: GcPtr<PartialApplicationData>) -> Value

Converts to this type from the input type.
source§

impl From<GcPtr<Thread>> for Value

source§

fn from(v: GcPtr<Thread>) -> Value

Converts to this type from the input type.
source§

impl From<GcPtr<ValueArray>> for Value

source§

fn from(v: GcPtr<ValueArray>) -> Value

Converts to this type from the input type.
source§

impl From<GcPtr<ValueStr>> for Value

source§

fn from(v: GcPtr<ValueStr>) -> Value

Converts to this type from the input type.
source§

impl<T: ?Sized> From<OwnedPtr<T>> for GcPtr<T>

source§

fn from(ptr: OwnedPtr<T>) -> GcPtr<T>

Freezes self into a shared pointer

source§

impl<T: ?Sized + Hash> Hash for GcPtr<T>

source§

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

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: ?Sized + Ord> Ord for GcPtr<T>

source§

fn cmp(&self, other: &GcPtr<T>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl<T: ?Sized + PartialEq> PartialEq for GcPtr<T>

source§

fn eq(&self, other: &GcPtr<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: ?Sized + PartialOrd> PartialOrd for GcPtr<T>

source§

fn partial_cmp(&self, other: &GcPtr<T>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GcPtr<ValueStr>

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<T, Seed> SerializeState<Seed> for GcPtr<T>
where T: SerializeState<Seed>, Seed: AsRef<NodeToId>,

source§

fn serialize_state<S>( &self, serializer: S, seed: &Seed ) -> Result<S::Ok, S::Error>
where S: Serializer,

Serializes self
source§

impl<T> Shared for GcPtr<T>

source§

fn unique(&self) -> bool

source§

fn as_ptr(&self) -> *const ()

source§

impl<T> Trace for GcPtr<T>
where T: Trace + ?Sized,

When traversing a GcPtr we need to mark it

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<T: ?Sized + Eq> Eq for GcPtr<T>

source§

impl<T: ?Sized + Send + Sync> Send for GcPtr<T>

source§

impl<T: ?Sized + Send + Sync> Sync for GcPtr<T>

Auto Trait Implementations§

§

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

§

impl<T: ?Sized> Unpin for GcPtr<T>

§

impl<T: ?Sized> UnwindSafe for GcPtr<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<Id> AsId<Id> for Id
where Id: ?Sized,

source§

fn as_id(&self) -> &Id

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
§

impl<T> CallHasher for T
where T: Hash + ?Sized,

§

fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64
where H: Hash + ?Sized, B: BuildHasher,

§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
§

impl<Choices> CoproductSubsetter<CNil, HNil> for Choices

§

type Remainder = Choices

§

fn subset( self ) -> Result<CNil, <Choices as CoproductSubsetter<CNil, HNil>>::Remainder>

Extract a subset of the possible types in a coproduct (or get the remaining possibilities) Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> DowncastArc for T
where T: Downcast + Send + Sync,

source§

fn into_arc_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

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

§

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
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

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<D, T> FromPtr<D> for T

source§

unsafe fn make_ptr(_: D, ptr: *mut ()) -> *mut T

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.

§

impl<T, U, I> LiftInto<U, I> for T
where U: LiftFrom<T, I>,

§

fn lift_into(self) -> U

Performs the indexed conversion.
§

impl<Source> Sculptor<HNil, HNil> for Source

§

type Remainder = Source

§

fn sculpt(self) -> (HNil, <Source as Sculptor<HNil, HNil>>::Remainder)

Consumes the current HList and returns an HList with the requested shape. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

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

§

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.
§

impl<T> Any for T
where T: Any,

source§

impl<T> Captures<'_> for T