#[repr(transparent)]
pub struct Arena { /* private fields */ }
Expand description

Arena is safe wrapper around Allocator that allows to allocate values that dont need dropping.

Implementations§

source§

impl Arena

source

pub fn new(allocator: Allocator) -> Self

Create new arena with given allocator.

source

pub fn alloc<T>(&self, value: T) -> &T

Allocate value in arena. Value must not need dropping which will be asserted at compile time.

source

pub fn alloc_slice<T>(&self, value: &[T]) -> &[T]

Analogous to alloc but for slices.

source

pub fn alloc_iter<T, I>(&self, iter: I) -> &[T] where I: IntoIterator<Item = T>, I::IntoIter: ExactSizeIterator,

Analogous to alloc_slice but for iterators.

source

pub fn alloc_byte_layout(&self, layout: Layout) -> &mut [u8]

More low level function that allocates sequence of arbitrary bytes compatible with passed layout.

source

pub fn clear(&mut self)

Clear arena, since all allocated values dont need dropping, we can just reset allocator. This function is safe since it requires mutable arena whitch implies all allocations are dropped.

source

pub fn into_allocator(self) -> Allocator

Get allocator from arena.

source

pub fn frame(&mut self) -> ArenaFrame<'_>

Get frame from arena. This creates checkpoint that can be used to rollback arena to state before frame was created. Rollback is performed implicitly when frame is dropped.

Trait Implementations§

source§

impl Default for Arena

source§

fn default() -> Arena

Returns the “default value” for a type. Read more
source§

impl Send for Arena

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

source§

fn deserialize( &self, deserializer: &mut D ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · 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.

§

impl<T> Pointee for T

§

type Metadata = ()

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

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.