Struct multiboot2::builder::BoxedDst

source ·
pub struct BoxedDst<T: ?Sized> { /* private fields */ }
Expand description

A helper type to create boxed DST, i.e., tags with a dynamic size for the builder. This is tricky in Rust. This type behaves similar to the regular Box type except that it ensure the same layout is used for the (explicit) allocation and the (implicit) deallocation of memory. Otherwise, I didn’t find any way to figure out the right layout for a DST. Miri always reported issues that the deallocation used a wrong layout.

Technically, I’m certain this code is memory safe. But with this type, I also can convince miri that it is.

Trait Implementations§

source§

impl<T: Debug + ?Sized> Debug for BoxedDst<T>

source§

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

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

impl<T: ?Sized> Deref for BoxedDst<T>

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<T: ?Sized> Drop for BoxedDst<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<T: ?Sized + PartialEq> PartialEq for BoxedDst<T>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<T: Eq + ?Sized> Eq for BoxedDst<T>

Auto Trait Implementations§

§

impl<T> Freeze for BoxedDst<T>
where T: ?Sized,

§

impl<T> RefUnwindSafe for BoxedDst<T>
where T: RefUnwindSafe + ?Sized,

§

impl<T> !Send for BoxedDst<T>

§

impl<T> !Sync for BoxedDst<T>

§

impl<T> Unpin for BoxedDst<T>
where T: Unpin + ?Sized,

§

impl<T> UnwindSafe for BoxedDst<T>

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> Pointee for T

§

type Metadata = ()

The type for metadata in pointers and references to Self.
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.