RtlHeapBox

Struct RtlHeapBox 

Source
pub struct RtlHeapBox<T: ?Sized> { /* private fields */ }
Expand description

A wrapper around memory that was allocated with RtlAllocateHeap and will be freed on drop with RtlFreeHeap, like std::boxed::Box.

Implementations§

Source§

impl<T> RtlHeapBox<T>

Source

pub unsafe fn from_raw(value: *mut T) -> Self

Creates a new RtlHeapBox from a raw pointer.

§Safety

The caller must guarantee that the pointer was allocated with RtlAllocateHeap with the default heap of the current process as the heap handle, returned by GetProcessHeap.

The caller must not allow this pointer to be aliased anywhere else. Conceptually, by calling from_raw, the caller must guarantee that ownership of the pointer value is transferred to this RtlHeapBox. This is to uphold the aliasing requirements used by RtlHeapBox to implement various Deref and AsRef traits.

On drop, this memory will be freed with RtlFreeHeap. The caller must not manually free this pointer.

Source

pub fn as_ptr(&self) -> *const T

Gets the contained pointer.

Trait Implementations§

Source§

impl<T> AsMut<T> for RtlHeapBox<T>

Source§

fn as_mut(&mut self) -> &mut T

Converts this type into a mutable reference of the (usually inferred) input type.
Source§

impl<T> AsRef<T> for RtlHeapBox<T>

Source§

fn as_ref(&self) -> &T

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T> Deref for RtlHeapBox<T>

Source§

type Target = T

The resulting type after dereferencing.
Source§

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

Dereferences the value.
Source§

impl<T> DerefMut for RtlHeapBox<T>

Source§

fn deref_mut(&mut self) -> &mut T

Mutably dereferences the value.
Source§

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

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

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

§

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

§

impl<T> !Send for RtlHeapBox<T>

§

impl<T> !Sync for RtlHeapBox<T>

§

impl<T> Unpin for RtlHeapBox<T>
where T: ?Sized,

§

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

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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.