RawAttachment

Struct RawAttachment 

Source
#[repr(transparent)]
pub struct RawAttachment { ptr: NonNull<AttachmentData<Erased>>, }
Expand description

A pointer to an AttachmentData that is guaranteed to point to an initialized instance of an AttachmentData<A> for some specific A, though we do not know which actual A it is.

However, the pointer is allowed to transition into a non-initialized state inside the RawAttachment::drop method.

The pointer is guaranteed to have been created using Box::into_raw.

We cannot use a Box<AttachmentData<A>> directly, because that does not allow us to type-erase the A.

Fields§

§ptr: NonNull<AttachmentData<Erased>>

Pointer to the inner attachment data

§Safety

The following safety invariants are guaranteed to be upheld as long as this struct exists:

  1. The pointer must have been created from a Box<AttachmentData<A>> for some A using Box::into_raw.
  2. The pointer will point to the same AttachmentData<A> for the entire lifetime of this object.
  3. The pointee is properly initialized for the entire lifetime of this object, except during the execution of the Drop implementation.

Implementations§

Source§

impl RawAttachment

Source

pub fn new<A, H>(attachment: A) -> Self
where A: 'static, H: AttachmentHandler<A>,

Creates a new RawAttachment with the specified handler and attachment.

The returned attachment will embed the specified attachment and use the specified handler for all operations.

Source

pub fn as_ref(&self) -> RawAttachmentRef<'_>

Returns a reference to the AttachmentData instance.

Trait Implementations§

Source§

impl Drop for RawAttachment

Source§

fn drop(&mut self)

Executes the destructor for this type. 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> 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, 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.