Opaque

Struct Opaque 

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

A type-erased pointer to an initialized value

Implementations§

Source§

impl<'mem> Opaque<'mem>

Source

pub fn from_ref<T>(r: &'mem mut T) -> Opaque<'mem>

Create a new opaque pointer from a mutable reference

Source

pub unsafe fn new_unchecked<T>(ptr: *mut T) -> Opaque<'mem>

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.

Source

pub fn as_byte_ptr(self) -> *const u8

Gets the underlying raw pointer

Source

pub fn as_mut_byte_ptr(self) -> *mut u8

Gets the underlying raw pointer as mutable

Source

pub 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 unsafe fn as_mut<'borrow, T>(self) -> &'borrow mut T
where 'borrow: 'mem,

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

§Safety

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

Source

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

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.

Source

pub fn as_const<'borrow>(self) -> OpaqueConst<'borrow>
where 'borrow: 'mem,

Make a const ptr out of this mut ptr

Source

pub 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)

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.

Trait Implementations§

Source§

impl<'mem> Clone for Opaque<'mem>

Source§

fn clone(&self) -> Opaque<'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 Opaque<'mem>

Auto Trait Implementations§

§

impl<'mem> Freeze for Opaque<'mem>

§

impl<'mem> RefUnwindSafe for Opaque<'mem>

§

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

§

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

§

impl<'mem> Unpin for Opaque<'mem>

§

impl<'mem> !UnwindSafe for Opaque<'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.