Struct rkyv::rc::ArchivedRc

source ·
pub struct ArchivedRc<T: ArchivePointee + ?Sized, F> { /* private fields */ }
Expand description

An archived Rc.

This is a thin wrapper around a RelPtr to the archived type paired with a “flavor” type. Because there may be many varieties of shared pointers and they may not be used together, the flavor helps check that memory is not being shared incorrectly during validation.

Implementations§

source§

impl<T: ArchivePointee + ?Sized, F> ArchivedRc<T, F>

source

pub fn get(&self) -> &T

Gets the value of the ArchivedRc.

source

pub unsafe fn get_seal_unchecked(this: Seal<'_, Self>) -> Seal<'_, T>

Gets the sealed value of this ArchivedRc.

§Safety

Any other pointers to the same value must not be dereferenced for the duration of the returned borrow.

source

pub fn resolve_from_ref<U: ArchiveUnsized<Archived = T> + ?Sized>( value: &U, resolver: RcResolver, out: Place<Self>, )

Resolves an archived Rc from a given reference.

source

pub fn serialize_from_ref<U, S>( value: &U, serializer: &mut S, ) -> Result<RcResolver, S::Error>
where U: SerializeUnsized<S> + ?Sized, S: Fallible + Writer + Sharing + ?Sized, S::Error: Source,

Serializes an archived Rc from a given reference.

Trait Implementations§

source§

impl<T, F> AsRef<T> for ArchivedRc<T, F>
where T: ArchivePointee + ?Sized,

source§

fn as_ref(&self) -> &T

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<T, F> Borrow<T> for ArchivedRc<T, F>
where T: ArchivePointee + ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T: ArchivePointee + ?Sized, F, __C: Fallible + ?Sized> CheckBytes<__C> for ArchivedRc<T, F>
where <__C as Fallible>::Error: Trace, ArchivedRc<T, F>: Verify<__C>, RelPtr<T>: CheckBytes<__C>, PhantomData<F>: CheckBytes<__C>,

source§

unsafe fn check_bytes( value: *const Self, context: &mut __C, ) -> Result<(), <__C as Fallible>::Error>

Checks whether the given pointer points to a valid value within the given context. Read more
source§

impl<T, F> Debug for ArchivedRc<T, F>
where T: ArchivePointee + Debug + ?Sized,

source§

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

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

impl<T, F> Deref for ArchivedRc<T, F>
where T: ArchivePointee + ?Sized,

source§

type Target = T

The resulting type after dereferencing.
source§

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

Dereferences the value.
source§

impl<T, D> Deserialize<Arc<T>, D> for ArchivedRc<T::Archived, ArcFlavor>

Available on target_has_atomic="ptr" and crate feature alloc only.
source§

fn deserialize(&self, deserializer: &mut D) -> Result<Arc<T>, D::Error>

Deserializes using the given deserializer
source§

impl<T, D> Deserialize<Rc<T>, D> for ArchivedRc<T::Archived, RcFlavor>

Available on crate feature alloc only.
source§

fn deserialize(&self, deserializer: &mut D) -> Result<Rc<T>, D::Error>

Deserializes using the given deserializer
source§

impl<T, F> Display for ArchivedRc<T, F>

source§

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

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

impl<T, F> Hash for ArchivedRc<T, F>
where T: ArchivePointee + Hash + ?Sized,

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, F> Ord for ArchivedRc<T, F>
where T: ArchivePointee + Ord + ?Sized,

source§

fn cmp(&self, other: &Self) -> 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, U> PartialEq<Arc<U>> for ArchivedRc<T, ArcFlavor>
where T: ArchivePointee + PartialEq<U> + ?Sized, U: ?Sized,

Available on target_has_atomic="ptr" and crate feature alloc only.
source§

fn eq(&self, other: &Arc<U>) -> 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, TF, U, UF> PartialEq<ArchivedRc<U, UF>> for ArchivedRc<T, TF>

source§

fn eq(&self, other: &ArchivedRc<U, UF>) -> 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, U> PartialEq<Rc<U>> for ArchivedRc<T, RcFlavor>
where T: ArchivePointee + PartialEq<U> + ?Sized, U: ?Sized,

Available on crate feature alloc only.
source§

fn eq(&self, other: &Rc<U>) -> 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, TF, U, UF> PartialOrd<ArchivedRc<U, UF>> for ArchivedRc<T, TF>

source§

fn partial_cmp(&self, other: &ArchivedRc<U, UF>) -> 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

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

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

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

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

impl<T, F> Pointer for ArchivedRc<T, F>

source§

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

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

impl<T, F, C> Verify<C> for ArchivedRc<T, F>

Available on crate feature bytecheck only.
source§

fn verify(&self, context: &mut C) -> Result<(), C::Error>

Checks whether the invariants of this type are upheld by self.
source§

impl<T, F> Eq for ArchivedRc<T, F>
where T: ArchivePointee + Eq + ?Sized,

source§

impl<T: ArchivePointee + ?Sized, F> Portable for ArchivedRc<T, F>

Auto Trait Implementations§

§

impl<T, F> Freeze for ArchivedRc<T, F>

§

impl<T, F> RefUnwindSafe for ArchivedRc<T, F>

§

impl<T, F> Send for ArchivedRc<T, F>
where F: Send, T: Send + ?Sized,

§

impl<T, F> Sync for ArchivedRc<T, F>
where F: Sync, T: Sync + ?Sized,

§

impl<T, F> !Unpin for ArchivedRc<T, F>

§

impl<T, F> UnwindSafe for ArchivedRc<T, F>

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> ArchivePointee for T

source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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<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> LayoutRaw for T

source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
source§

impl<T> Pointee for T

source§

type Metadata = ()

The metadata type for pointers and references to this type.
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>,

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.