[][src]Trait xalloc::arena::UnsafeArena

pub trait UnsafeArena<T> {
    type Ptr: Debug + Clone + Default + PartialEq + Eq;
    fn insert(&mut self, x: T) -> Self::Ptr;
unsafe fn get_unchecked(&self, ptr: &Self::Ptr) -> &T;
unsafe fn get_unchecked_mut(&mut self, ptr: &Self::Ptr) -> &mut T;
unsafe fn remove_unchecked(&mut self, ptr: &Self::Ptr) -> T; fn reserve(&mut self, _additional: usize) { ... } }

Homogeneous memory arena types supporting operations that do not guarantee memory safety.

Methods prefixed with _unchecked all assume given pointers are valid; specifically, they assumes that:

  1. The pointers were constructed by the same instance of UnsafeArena.
  2. The pointers have not been removed from the arena yet.

Associated Types

type Ptr: Debug + Clone + Default + PartialEq + Eq

Pointer type.

  • Ptr::clone(p) returns a pointer that points the same object.
  • Ptr::default() returns an uninitialized pointer with a well-defined value (e.g., null pointer).
  • Ptr::eq(x, y) checks the equality of two pointers. Both pointers must originate from the same arena. Otherwise, the returned value does not make sense.
Loading content...

Required methods

fn insert(&mut self, x: T) -> Self::Ptr

Insert a value into the arena.

Returns a pointer that points the inserted value.

unsafe fn get_unchecked(&self, ptr: &Self::Ptr) -> &T

Get a reference to a contained value, without a pointer validity check.

unsafe fn get_unchecked_mut(&mut self, ptr: &Self::Ptr) -> &mut T

Get a mutable reference to a contained value, without a pointer validity check.

unsafe fn remove_unchecked(&mut self, ptr: &Self::Ptr) -> T

Remove a value from the arena, without a pointer validity check.

Returns the removed value.

Loading content...

Provided methods

fn reserve(&mut self, _additional: usize)

Reserves capacity for at least additional values to be inserted in the arena.

Loading content...

Implementors

impl<T> UnsafeArena<T> for CheckedArena<T>[src]

type Ptr = Ptr

fn reserve(&mut self, _additional: usize)[src]

impl<T> UnsafeArena<T> for SysAllocator[src]

type Ptr = Ptr

fn reserve(&mut self, _additional: usize)[src]

impl<T, A, P> UnsafeArena<T> for PooledArena<T, A, P> where
    A: UnsafeArena<Entry<T, P>, Ptr = P>,
    P: Clone + Default + PartialEq + Eq + Debug
[src]

type Ptr = A::Ptr

fn reserve(&mut self, _additional: usize)[src]

Loading content...