Skip to main content

ArenaError

Enum ArenaError 

Source
pub enum ArenaError {
Show 13 variants OutOfMemory, IndexOutOfBounds, IndexNotAllocated, InvalidArgument, TraceError, Cyclic, TypeError, ParseError, ArithmeticOverflow, DivisionByZero, UnboundVariable, NotCallable, ImmutableEnvironment,
}
Expand description

Errors that can occur during arena and Lisp operations.

Each variant captures a specific failure mode, enabling precise diagnostics without heap-allocated error messages.

Variants§

§

OutOfMemory

Arena is full, cannot allocate more cells.

§

IndexOutOfBounds

Index exceeds the arena’s capacity (>= N).

§

IndexNotAllocated

Index refers to a slot that has been freed or was never allocated.

§

InvalidArgument

An argument to an arena operation was invalid (e.g., zero-length contiguous allocation).

§

TraceError

An error occurred during garbage collection tracing. This can happen if the mark stack overflows or roots are invalid.

§

Cyclic

Cycle detected during structure traversal (e.g., graph traversal or recursive data structure operations).

§

TypeError

A value had the wrong type for the requested operation (e.g., expected a Number but found a Cons).

§

ParseError

A parse error occurred while reading an S-expression.

§

ArithmeticOverflow

Checked arithmetic overflowed (e.g., addition, negation).

§

DivisionByZero

Division or modulo by zero.

§

UnboundVariable

A variable was not found in the current or global environment.

§

NotCallable

Attempted to call a value that is not a function (lambda or builtin).

§

ImmutableEnvironment

Attempted to mutate an immutable environment (e.g., the ground environment).

Implementations§

Source§

impl ArenaError

Source

pub const fn as_str(&self) -> &'static str

Get a human-readable description of the error.

Source

pub const fn is_out_of_memory(&self) -> bool

Check if this error indicates the arena is full.

Source

pub const fn is_invalid_index(&self) -> bool

Check if this error indicates an invalid index (out of bounds or not allocated).

Source

pub const fn is_trace_error(&self) -> bool

Check if this error is related to garbage collection.

Trait Implementations§

Source§

impl Clone for ArenaError

Source§

fn clone(&self) -> ArenaError

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 ArenaError

Source§

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

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

impl Display for ArenaError

Source§

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

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

impl PartialEq for ArenaError

Source§

fn eq(&self, other: &ArenaError) -> 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 Copy for ArenaError

Source§

impl Eq for ArenaError

Source§

impl StructuralPartialEq for ArenaError

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.