pub struct PtrMut<'mem>(/* private fields */);
Expand description
A type-erased pointer to an initialized value
Implementations§
Source§impl<'mem> PtrMut<'mem>
impl<'mem> PtrMut<'mem>
Sourcepub const fn new<T>(ptr: *mut T) -> Self
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
Sourcepub const fn as_byte_ptr(self) -> *const u8
pub const fn as_byte_ptr(self) -> *const u8
Gets the underlying raw pointer
Sourcepub const fn as_mut_byte_ptr(self) -> *mut u8
pub const fn as_mut_byte_ptr(self) -> *mut u8
Gets the underlying raw pointer as mutable
Sourcepub const unsafe fn as_ptr<T>(self) -> *const T
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
Sourcepub const unsafe fn as_mut<'borrow: 'mem, T>(self) -> &'borrow mut T
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.
Sourcepub const unsafe fn get<'borrow: 'mem, T>(self) -> &'borrow T
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.
Sourcepub const fn as_const<'borrow: 'mem>(self) -> PtrConst<'borrow>
pub const fn as_const<'borrow: 'mem>(self) -> PtrConst<'borrow>
Make a const ptr out of this mut ptr
Sourcepub const unsafe fn read<T>(self) -> T
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
.
Sourcepub unsafe fn drop_in_place<T>(self) -> PtrUninit<'mem>
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.
Sourcepub unsafe fn replace<T>(self, value: T) -> Self
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