pub struct BoundVarEnv {
name_gen: IndexGen<BoundVarName>,
layers: RefCell<Vec<BoundVarLayer>>,
}
Fields§
§name_gen: IndexGen<BoundVarName>
§layers: RefCell<Vec<BoundVarLayer>>
Implementations§
Source§impl BoundVarEnv
impl BoundVarEnv
Sourcepub fn check_if_seen_fn_root_bvar(
&self,
debruijn: DebruijnIndex,
var: BoundVar,
) -> Option<(bool, FnRootLayerType)>
pub fn check_if_seen_fn_root_bvar( &self, debruijn: DebruijnIndex, var: BoundVar, ) -> Option<(bool, FnRootLayerType)>
Checks if a variable is
- In the function root layer (
Some(..)
if so,None
otherwise) - Has been seen before (the
bool
inside of theSome(..)
) - At the args or ret layer type (the
FnRootLayerType
inside of theSome(..)
)
It updates the set of seen variables at the function root layer when it does the check.
pub fn should_remove_var( &self, debruijn: DebruijnIndex, var: BoundVar, ) -> Option<bool>
pub fn mark_var_as_removed( &self, debruijn: DebruijnIndex, var: BoundVar, ) -> Option<bool>
fn lookup(&self, debruijn: DebruijnIndex, var: BoundVar) -> Option<BoundVarName>
fn push_layer( &self, vars: &[BoundVariableKind], vars_to_remove: FxHashSet<BoundVar>, is_fn_root_layer: Option<FnRootLayerType>, )
fn peek_layer(&self) -> Option<BoundVarLayer>
fn pop_layer(&self) -> Option<BoundVarLayer>
Trait Implementations§
Source§impl Default for BoundVarEnv
impl Default for BoundVarEnv
Source§fn default() -> BoundVarEnv
fn default() -> BoundVarEnv
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl !Freeze for BoundVarEnv
impl !RefUnwindSafe for BoundVarEnv
impl Send for BoundVarEnv
impl !Sync for BoundVarEnv
impl Unpin for BoundVarEnv
impl UnwindSafe for BoundVarEnv
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more