TrackedAllocation

Struct TrackedAllocation 

Source
pub struct TrackedAllocation<T> { /* private fields */ }
Expand description

A tracked allocation that stores its layout for safe deallocation.

This wrapper ensures that memory is deallocated with the same layout that was used for allocation, preventing undefined behavior.

§Example

use ruvector_security::TrackedAllocation;

// Allocate memory for 100 f32 values
let mut alloc = TrackedAllocation::<f32>::new(100).unwrap();

// Write data
unsafe {
    for i in 0..100 {
        *alloc.as_mut_ptr().add(i) = i as f32;
    }
}

// Memory is automatically deallocated when `alloc` is dropped

Implementations§

Source§

impl<T> TrackedAllocation<T>

Source

pub fn new(count: usize) -> SecurityResult<Self>

Allocate memory for count elements of type T.

§Errors

Returns an error if:

  • count is zero
  • The allocation size overflows
  • The allocator fails
Source

pub fn new_zeroed(count: usize) -> SecurityResult<Self>

Allocate and zero-initialize memory.

Source

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

Get a raw pointer to the allocation.

Source

pub fn as_mut_ptr(&mut self) -> *mut T

Get a mutable raw pointer to the allocation.

Source

pub fn len(&self) -> usize

Get the number of elements.

Source

pub fn is_empty(&self) -> bool

Check if the allocation is empty (always false for valid allocations).

Source

pub fn layout(&self) -> Layout

Get the layout used for allocation.

Source

pub unsafe fn as_slice(&self) -> &[T]

Convert to a slice.

§Safety

The caller must ensure the memory has been properly initialized.

Source

pub unsafe fn as_slice_mut(&mut self) -> &mut [T]

Convert to a mutable slice.

§Safety

The caller must ensure the memory has been properly initialized.

Source

pub fn copy_from_slice(&mut self, src: &[T])
where T: Copy,

Copy data from a slice into the allocation.

§Panics

Panics if the slice length doesn’t match the allocation length.

Source

pub fn into_raw_parts(self) -> (*mut T, Layout, usize)

Take ownership and return raw parts.

After calling this, the caller is responsible for deallocation. Use TrackedAllocation::from_raw_parts to reconstruct.

Source

pub unsafe fn from_raw_parts( ptr: *mut T, layout: Layout, len: usize, ) -> Option<Self>

Reconstruct from raw parts.

§Safety

The caller must provide parts from a previous into_raw_parts call with matching type T.

Trait Implementations§

Source§

impl<T> Drop for TrackedAllocation<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T: Send> Send for TrackedAllocation<T>

Source§

impl<T: Sync> Sync for TrackedAllocation<T>

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

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,