pub struct CopyTaggedPtr<P, T, const COMPARE_PACKED: bool>where
    P: Pointer,
    T: Tag,{
    packed: NonZeroUsize,
    data: PhantomData<(P, T)>,
}
Expand description

A Copy TaggedPtr.

You should use this instead of the TaggedPtr type in all cases where P: Copy.

If COMPARE_PACKED is true, then the pointers will be compared and hashed without unpacking. Otherwise we don’t implement PartialEq/Eq/Hash; if you want that, wrap the TaggedPtr.

Fields§

§packed: NonZeroUsize§data: PhantomData<(P, T)>

Implementations§

source§

impl<P, T, const COMPARE_PACKED: bool> CopyTaggedPtr<P, T, COMPARE_PACKED>where P: Pointer, T: Tag,

source

const TAG_BIT_SHIFT: usize = _

source

const ASSERTION: () = _

source

pub fn new(pointer: P, tag: T) -> Self

source

pub(super) fn pointer_raw(&self) -> usize

source

pub fn pointer(self) -> Pwhere P: Copy,

source

pub fn pointer_ref(&self) -> &P::Target

source

pub fn pointer_mut(&mut self) -> &mut P::Targetwhere P: DerefMut,

source

pub fn tag(&self) -> T

source

pub fn set_tag(&mut self, tag: T)

Trait Implementations§

source§

impl<P, T, const COMPARE_PACKED: bool> Clone for CopyTaggedPtr<P, T, COMPARE_PACKED>where P: Pointer + Copy, T: Tag,

source§

fn clone(&self) -> Self

Returns a copy 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<P, T, const COMPARE_PACKED: bool> Debug for CopyTaggedPtr<P, T, COMPARE_PACKED>where P: Pointer, P::Target: Debug, T: Tag + Debug,

source§

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

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

impl<P, T, const COMPARE_PACKED: bool> Deref for CopyTaggedPtr<P, T, COMPARE_PACKED>where P: Pointer, T: Tag,

§

type Target = <P as Deref>::Target

The resulting type after dereferencing.
source§

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

Dereferences the value.
source§

impl<P, T, const COMPARE_PACKED: bool> DerefMut for CopyTaggedPtr<P, T, COMPARE_PACKED>where P: Pointer + DerefMut, T: Tag,

source§

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

Mutably dereferences the value.
source§

impl<P, T> Hash for CopyTaggedPtr<P, T, true>where P: Pointer, T: Tag,

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<P, T, HCX, const COMPARE_PACKED: bool> HashStable<HCX> for CopyTaggedPtr<P, T, COMPARE_PACKED>where P: Pointer + HashStable<HCX>, T: Tag + HashStable<HCX>,

source§

fn hash_stable(&self, hcx: &mut HCX, hasher: &mut StableHasher)

source§

impl<P, T> PartialEq<CopyTaggedPtr<P, T, true>> for CopyTaggedPtr<P, T, true>where P: Pointer, T: Tag,

source§

fn eq(&self, other: &Self) -> 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<P, T, const COMPARE_PACKED: bool> Copy for CopyTaggedPtr<P, T, COMPARE_PACKED>where P: Pointer + Copy, T: Tag,

source§

impl<P, T> Eq for CopyTaggedPtr<P, T, true>where P: Pointer, T: Tag,

Auto Trait Implementations§

§

impl<P, T, const COMPARE_PACKED: bool> RefUnwindSafe for CopyTaggedPtr<P, T, COMPARE_PACKED>where P: RefUnwindSafe, T: RefUnwindSafe,

§

impl<P, T, const COMPARE_PACKED: bool> Send for CopyTaggedPtr<P, T, COMPARE_PACKED>where P: Send, T: Send,

§

impl<P, T, const COMPARE_PACKED: bool> Sync for CopyTaggedPtr<P, T, COMPARE_PACKED>where P: Sync, T: Sync,

§

impl<P, T, const COMPARE_PACKED: bool> Unpin for CopyTaggedPtr<P, T, COMPARE_PACKED>where P: Unpin, T: Unpin,

§

impl<P, T, const COMPARE_PACKED: bool> UnwindSafe for CopyTaggedPtr<P, T, COMPARE_PACKED>where P: UnwindSafe, T: 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> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · 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 Twhere T: Clone,

§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · 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.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<'a, T> Captures<'a> for Twhere T: ?Sized,

source§

impl<T> Erased for T

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes