ParamArena

Struct ParamArena 

Source
pub struct ParamArena { /* private fields */ }
Expand description

Central storage for all function/method parameter data.

Stores parameter names, types, modes, and comptime flags in separate contiguous arrays for optimal cache locality during type checking.

Implementations§

Source§

impl ParamArena

Source

pub fn new() -> Self

Creates a new, empty parameter arena.

Source

pub fn with_capacity(capacity: usize) -> Self

Creates a new arena with pre-allocated capacity.

Use when the approximate number of total parameters is known.

Source

pub fn total_params(&self) -> usize

Returns the total number of parameters stored in the arena.

Source

pub fn alloc( &mut self, names: impl IntoIterator<Item = Spur>, types: impl IntoIterator<Item = Type>, modes: impl IntoIterator<Item = RirParamMode>, comptime: impl IntoIterator<Item = bool>, ) -> ParamRange

Allocates storage for a function’s parameters.

All iterators must yield the same number of elements.

§Panics

Panics if the iterators yield different numbers of elements.

Source

pub fn alloc_method( &mut self, names: impl IntoIterator<Item = Spur>, types: impl IntoIterator<Item = Type>, ) -> ParamRange

Allocates storage for a method’s parameters (without comptime flags).

Methods don’t have comptime parameters, so this is a convenience method that fills the comptime array with false values.

Source

pub fn names(&self, range: ParamRange) -> &[Spur]

Returns the parameter names for a range.

Source

pub fn types(&self, range: ParamRange) -> &[Type]

Returns the parameter types for a range.

Source

pub fn modes(&self, range: ParamRange) -> &[RirParamMode]

Returns the parameter modes for a range.

Source

pub fn comptime(&self, range: ParamRange) -> &[bool]

Returns the comptime flags for a range.

Source

pub fn iter( &self, range: ParamRange, ) -> impl Iterator<Item = (&Spur, &Type, &RirParamMode, &bool)>

Returns an iterator over all parameter data for a range.

Useful for cases where you need to iterate all fields together.

Source

pub fn name_type_pairs( &self, range: ParamRange, ) -> impl Iterator<Item = (&Spur, &Type)>

Returns an iterator over (name, type) pairs for a range.

Useful for method parameter type checking.

Source

pub fn type_mode_pairs( &self, range: ParamRange, ) -> impl Iterator<Item = (&Type, &RirParamMode)>

Returns an iterator over (type, mode) pairs for a range.

Useful for function call argument checking.

Trait Implementations§

Source§

impl Debug for ParamArena

Source§

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

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

impl Default for ParamArena

Source§

fn default() -> ParamArena

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

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

§

impl<'src, T> IntoMaybe<'src, T> for T
where T: 'src,

§

type Proj<U: 'src> = U

§

fn map_maybe<R>( self, _f: impl FnOnce(&'src T) -> &'src R, g: impl FnOnce(T) -> R, ) -> <T as IntoMaybe<'src, T>>::Proj<R>
where R: 'src,

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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more