PtrMut

Struct PtrMut 

Source
pub struct PtrMut<'mem>(/* private fields */);
Expand description

A type-erased pointer to an initialized value

Implementations§

Source§

impl<'mem> PtrMut<'mem>

Source

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

Create a new opaque pointer from a raw pointer

§Safety

The pointer must be valid, aligned, and point to initialized memory of the correct type, and be valid for lifetime 'mem.

It’s encouraged to take the address of something with &raw mut x, rather than &x

Source

pub const fn as_byte_ptr(self) -> *const u8

Gets the underlying raw pointer

Source

pub const fn as_mut_byte_ptr(self) -> *mut u8

Gets the underlying raw pointer as mutable

Source

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

Gets the underlying raw pointer as a pointer of type T

§Safety

Must be called with the original type T that was used to create this pointer

Source

pub const unsafe fn as_mut<'borrow: 'mem, T>(self) -> &'borrow mut T

Gets the underlying raw pointer as a mutable pointer of type T

§Safety

T must be the actual underlying type. You’re downcasting with no guardrails.

Source

pub const unsafe fn get<'borrow: 'mem, T>(self) -> &'borrow T

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

§Safety

T must be the actual underlying type. You’re downcasting with no guardrails. You must respect AXM (aliasing xor mutability). Holding onto the borrow while calling as_mut is UB.

Basically this is UB land. Careful.

Source

pub const fn as_const<'borrow: 'mem>(self) -> PtrConst<'borrow>

Make a const ptr out of this mut ptr

Source

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

Exposes core::ptr::read

§Safety

T must be the actual underlying type of the pointed-to memory. The memory must be properly initialized and aligned for type T.

Source

pub unsafe fn drop_in_place<T>(self) -> PtrUninit<'mem>

Exposes core::ptr::drop_in_place

§Safety

T must be the actual underlying type of the pointed-to memory. The memory must be properly initialized and aligned for type T. After calling this function, the memory should not be accessed again until it is properly reinitialized.

Source

pub unsafe fn replace<T>(self, value: T) -> Self

Write a value to this location after dropping the existing value

§Safety
  • The pointer must be properly aligned for T and point to allocated memory that can be safely written to.
  • T must be the actual type of the object being pointed to
  • The memory must already be initialized to a valid T value

Trait Implementations§

Source§

impl<'mem> Clone for PtrMut<'mem>

Source§

fn clone(&self) -> PtrMut<'mem>

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<'mem> Copy for PtrMut<'mem>

Auto Trait Implementations§

§

impl<'mem> Freeze for PtrMut<'mem>

§

impl<'mem> RefUnwindSafe for PtrMut<'mem>

§

impl<'mem> !Send for PtrMut<'mem>

§

impl<'mem> !Sync for PtrMut<'mem>

§

impl<'mem> Unpin for PtrMut<'mem>

§

impl<'mem> !UnwindSafe for PtrMut<'mem>

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.