PtrConst

Struct PtrConst 

Source
pub struct PtrConst { /* private fields */ }
Expand description

A type-erased read-only pointer.

Wraps PtrMut but only exposes read methods. No lifetime parameter.

Implementations§

Source§

impl PtrConst

Source

pub fn new<T: ?Sized>(ptr: *const T) -> Self

Creates a new const pointer from a raw pointer.

Source

pub const fn new_sized<T: Sized>(ptr: *const T) -> Self

Creates a new const pointer from a raw pointer to a sized type. This is const because sized types use thin pointers.

Source

pub fn new_wide(data: *const u8, metadata: *const ()) -> Self

Create a wide pointer from raw data pointer and metadata.

Source

pub fn is_wide(self) -> bool

Returns true if this is a wide pointer.

Source

pub fn raw_ptr(self) -> *const u8

Returns the raw data pointer.

Source

pub fn as_byte_ptr(self) -> *const u8

Returns the underlying data pointer as a byte pointer.

§Panics

Panics if this is a wide pointer.

Source

pub unsafe fn get<'a, T: ?Sized>(self) -> &'a T

Borrows the underlying object as a reference of type T.

§Safety
  • T must be the actual underlying type
  • The memory must be valid and initialized
  • The returned reference must not outlive the actual data
Source

pub unsafe fn as_ptr<T: ?Sized>(self) -> *const T

Gets the underlying raw pointer as a const pointer of type T.

§Safety

Must be called with the original type T.

Source

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

Reads the value from the pointer.

§Safety
  • T must be the actual underlying type
  • The memory must be properly initialized
Source

pub unsafe fn field(self, offset: usize) -> PtrConst

Returns a pointer with the given offset added.

§Safety

Offset must be within bounds of the allocated memory.

Source

pub unsafe fn into_mut(self) -> PtrMut

Convert to a mutable pointer.

§Safety

Caller must ensure they have exclusive access.

Trait Implementations§

Source§

impl Clone for PtrConst

Source§

fn clone(&self) -> PtrConst

Returns a duplicate 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 Debug for PtrConst

Source§

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

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

impl From<PtrMut> for PtrConst

Source§

fn from(p: PtrMut) -> Self

Converts to this type from the input type.
Source§

impl IterItem for PtrConst

Source§

type Item = PtrConst

The output type of the iterator
Source§

impl PartialEq for PtrConst

Source§

fn eq(&self, other: &PtrConst) -> 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 Copy for PtrConst

Source§

impl Eq for PtrConst

Source§

impl StructuralPartialEq for PtrConst

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