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,Noneotherwise) - Has been seen before (the
boolinside of theSome(..)) - At the args or ret layer type (the
FnRootLayerTypeinside 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