Struct rkyv::rc::ArchivedRc

source ·
#[repr(transparent)]
pub struct ArchivedRc<T: ArchivePointee + ?Sized, F>(_, _);
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_pin_mut_unchecked(self: Pin<&mut Self>) -> Pin<&mut T>

Gets the pinned mutable value of this ArchivedRc.

Safety

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

source

pub unsafe fn resolve_from_ref<U: ArchiveUnsized<Archived = T> + ?Sized>( value: &U, pos: usize, resolver: RcResolver<MetadataResolver<U>>, out: *mut Self )

Resolves an archived Rc from a given reference.

Safety
  • pos must be the position of out within the archive
  • resolver must be the result of serializing value
source

pub fn serialize_from_ref<U: SerializeUnsized<S> + ?Sized, S: Serializer + SharedSerializeRegistry + ?Sized>( value: &U, serializer: &mut S ) -> Result<RcResolver<MetadataResolver<U>>, S::Error>

Serializes an archived Rc from a given reference.

Trait Implementations§

source§

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

source§

fn as_ref(&self) -> &T

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

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T, F, C> CheckBytes<C> for ArchivedRc<T, F>where T: ArchivePointee + CheckBytes<C> + LayoutRaw + Pointee + ?Sized + 'static, C: ArchiveContext + SharedContext + ?Sized, T::ArchivedMetadata: CheckBytes<C>, C::Error: Error, F: 'static,

§

type Error = SharedPointerError<<<T as ArchivePointee>::ArchivedMetadata as CheckBytes<C>>::Error, <T as CheckBytes<C>>::Error, <C as Fallible>::Error>

The error that may result from checking the type.
source§

unsafe fn check_bytes<'a>( value: *const Self, context: &mut C ) -> Result<&'a Self, Self::Error>

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

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

source§

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

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

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

§

type Target = T

The resulting type after dereferencing.
source§

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

Dereferences the value.
source§

impl<T: ArchiveUnsized + ?Sized + 'static, D: SharedDeserializeRegistry + ?Sized> Deserialize<Arc<T>, D> for ArchivedRc<T::Archived, ArcFlavor>where T::Archived: DeserializeUnsized<T, D>,

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>where T: ArchiveUnsized + ?Sized + 'static, T::Archived: DeserializeUnsized<T, D>, D: SharedDeserializeRegistry + ?Sized,

source§

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

Deserializes using the given deserializer
source§

impl<T: ArchivePointee + Display + ?Sized, 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: ArchivePointee + Hash + ?Sized, F> Hash for ArchivedRc<T, F>

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

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) -> Selfwhere Self: Sized,

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

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

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

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

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,

source§

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

source§

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

source§

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

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

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<T, F> Pointer for ArchivedRc<T, F>

source§

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

Formats the value using the given formatter.
source§

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

Auto Trait Implementations§

§

impl<T: ?Sized, F> RefUnwindSafe for ArchivedRc<T, F>where F: RefUnwindSafe, T: RefUnwindSafe, <T as ArchivePointee>::ArchivedMetadata: RefUnwindSafe,

§

impl<T: ?Sized, F> Send for ArchivedRc<T, F>where F: Send, T: Send, <T as ArchivePointee>::ArchivedMetadata: Send,

§

impl<T: ?Sized, F> Sync for ArchivedRc<T, F>where F: Sync, T: Sync, <T as ArchivePointee>::ArchivedMetadata: Sync,

§

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

§

impl<T: ?Sized, F> UnwindSafe for ArchivedRc<T, F>where F: UnwindSafe, T: UnwindSafe, <T as ArchivePointee>::ArchivedMetadata: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> ArchivePointee for T

§

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 Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
§

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

§

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

source§

impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

source§

fn deserialize( &self, deserializer: &mut D ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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>

Gets the layout of the type.
source§

impl<T> Pointee for T

§

type Metadata = ()

The type for metadata in pointers and references to Self.
source§

impl<T> ToString for Twhere 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 Twhere 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 Twhere 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.