Skip to main content

CompactPtr

Struct CompactPtr 

Source
pub struct CompactPtr<T: CompactRepr> { /* private fields */ }

Implementations§

Source§

impl<T: CompactRepr> CompactPtr<T>

Source

pub fn is_null(self) -> bool

Source

pub unsafe fn as_ref(self) -> Option<Compact<T>>

Returns the element the pointer references, or None if it is null.

§Safety

If non-null, self.packed must point to valid Store<T> storage (or, for a direct pointer, to a live T) and self.index must address an initialized element within it. The caller must ensure the backing storage remains live while the returned value is used.

Source

pub unsafe fn offset(self, count: isize) -> CompactPtr<T>

Produces a pointer offset by count elements (analogous to pointer::offset).

§Safety

The resulting index (self.index + count) must be in bounds or one past the end of the same allocated backing storage.

Source

pub unsafe fn add(self, count: usize) -> CompactPtr<T>

Produces a pointer advanced by count elements (analogous to pointer::add).

§Safety

The resulting index (self.index + count) must be in bounds or one past the end of the same allocated backing storage.

Source

pub unsafe fn sub(self, count: usize) -> CompactPtr<T>

Produces a pointer moved back by count elements (analogous to pointer::sub).

§Safety

count must not exceed self.index; the resulting index must be in bounds of the same allocated backing storage.

Source

pub unsafe fn read(self) -> Compact<T>

Reads the element the pointer references (analogous to pointer::read).

§Safety

self.packed must point to valid Store<T> storage (or, for a direct pointer, to a live T) and self.index must address an initialized element within it.

Source§

impl<T: CompactRepr> CompactPtr<T>

Source

pub fn as_mut_ptr(&self) -> CompactPtrMut<T>

Direct pointers convert to a null mutable pointer: they borrow a standalone value immutably, so there is no storage a write could legally target.

Trait Implementations§

Source§

impl<T: Clone + CompactRepr> Clone for CompactPtr<T>

Source§

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

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Copy + CompactRepr> Copy for CompactPtr<T>

Source§

impl<T: CompactRepr> Debug for CompactPtr<T>

Source§

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

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

impl<T: CompactRepr> Eq for CompactPtr<T>

Source§

impl<T: CompactRepr> Hash for CompactPtr<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: CompactRepr> PartialEq for CompactPtr<T>

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more

Auto Trait Implementations§

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<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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.