Skip to main content

ArenaIndex

Struct ArenaIndex 

Source
pub struct ArenaIndex(/* private fields */);
Expand description

Index into the arena.

This is a lightweight wrapper around usize that directly indexes the arena’s internal array.

§Safety Note

Indices should only be obtained from arena operations (alloc, iter). Manually constructing indices bypasses the type system’s protection and should only be used for serialization/deserialization.

Implementations§

Source§

impl ArenaIndex

Source

pub const NULL: ArenaIndex

A sentinel “null” index that is never valid.

This can be used as a placeholder when an optional index is needed but Option<ArenaIndex> is not desired.

Source

pub const fn new(index: usize) -> ArenaIndex

Create a new arena index with the given slot index.

§Warning

This is a low-level constructor intended for serialization/deserialization. For normal use, obtain indices from [Arena::alloc] or [Arena::iter]. Fabricating indices manually may lead to undefined behavior if the index doesn’t correspond to a valid allocation.

Source

pub const fn raw(self) -> usize

Get the raw slot index value.

Source

pub const fn is_null(self) -> bool

Check if this is the null index.

Trait Implementations§

Source§

impl Clone for ArenaIndex

Source§

fn clone(&self) -> ArenaIndex

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ArenaIndex

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for ArenaIndex

Source§

impl<const N: usize> FromLisp<N> for ArenaIndex

ArenaIndex can be passed through directly (for when you want raw Lisp values)

Source§

fn from_lisp(_lisp: &Lisp<N>, idx: ArenaIndex) -> ArenaResult<Self>

Convert a Lisp value at the given index to this Rust type. Read more
Source§

impl Hash for ArenaIndex

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ArenaIndex

Source§

fn eq(&self, other: &ArenaIndex) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<const N: usize> ToLisp<N> for ArenaIndex

Source§

fn to_lisp(&self, _lisp: &Lisp<N>) -> ArenaResult<ArenaIndex>

Convert this Rust value to a Lisp value, allocating in the arena. Read more
Source§

impl Copy for ArenaIndex

Source§

impl Eq for ArenaIndex

Source§

impl StructuralPartialEq for ArenaIndex

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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<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.