Struct rustc_arena::TypedArena

source ·
pub struct TypedArena<T> {
    pub(crate) ptr: Cell<*mut T>,
    pub(crate) end: Cell<*mut T>,
    pub(crate) chunks: RefCell<Vec<ArenaChunk<T>>>,
    pub(crate) _own: PhantomData<T>,
}
Expand description

An arena that can hold objects of only one type.

Fields§

§ptr: Cell<*mut T>

A pointer to the next object to be allocated.

§end: Cell<*mut T>

A pointer to the end of the allocated area. When this pointer is reached, a new chunk is allocated.

§chunks: RefCell<Vec<ArenaChunk<T>>>

A vector of arena chunks.

§_own: PhantomData<T>

Marker indicating that dropping the arena causes its owned instances of T to be dropped.

Implementations§

source§

impl<T> TypedArena<T>

source

pub fn alloc(&self, object: T) -> &mut T

Allocates an object in the TypedArena, returning a reference to it.

source

pub(crate) fn can_allocate(&self, additional: usize) -> bool

source

pub(crate) fn alloc_raw_slice(&self, len: usize) -> *mut T

source

pub fn alloc_from_iter<I: IntoIterator<Item = T>>(&self, iter: I) -> &mut [T]

source

pub(crate) fn grow(&self, additional: usize)

Grows the arena.

source

pub(crate) fn clear_last_chunk(&self, last_chunk: &mut ArenaChunk<T>)

Trait Implementations§

source§

impl<T> Default for TypedArena<T>

source§

fn default() -> TypedArena<T>

Creates a new TypedArena.

source§

impl<T> Drop for TypedArena<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<T: Send> Send for TypedArena<T>

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for TypedArena<T>

§

impl<T> !Sync for TypedArena<T>

§

impl<T> Unpin for TypedArena<T>where T: Unpin,

§

impl<T> UnwindSafe for TypedArena<T>where T: UnwindSafe + RefUnwindSafe,

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> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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, U> TryFrom<U> for Twhere 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 Twhere 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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 48 bytes