struct FindFreeVarsVisitor<I: Interner> {
interner: I,
}
Fields
interner: I
Trait Implementations
sourceimpl<I: Interner> TypeVisitor<I> for FindFreeVarsVisitor<I>
impl<I: Interner> TypeVisitor<I> for FindFreeVarsVisitor<I>
type BreakTy = ()
type BreakTy = ()
The “break type” of the visitor, often
()
. It represents the result
the visitor yields when it stops visiting. Read moresourcefn as_dyn(&mut self) -> &mut dyn TypeVisitor<I, BreakTy = Self::BreakTy>
fn as_dyn(&mut self) -> &mut dyn TypeVisitor<I, BreakTy = Self::BreakTy>
Creates a
dyn
value from this visitor. Unfortunately, this
must be added manually to each impl of visitor; it permits the
default implements below to create a &mut dyn TypeVisitor
from
Self
without knowing what Self
is (by invoking this
method). Effectively, this limits impls of visitor
to types
for which we are able to create a dyn value (i.e., not [T]
types). Read moresourcefn visit_free_var(
&mut self,
_bound_var: BoundVar,
_outer_binder: DebruijnIndex
) -> ControlFlow<()>
fn visit_free_var(
&mut self,
_bound_var: BoundVar,
_outer_binder: DebruijnIndex
) -> ControlFlow<()>
Invoked for
BoundVar
instances that are not bound
within the type being visited over: Read moresourcefn visit_ty(
&mut self,
ty: &Ty<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
fn visit_ty(
&mut self,
ty: &Ty<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
Top-level callback: invoked for each
Ty<I>
that is
encountered when visiting. By default, invokes
super_visit_with
, which will in turn invoke the more
specialized visiting methods below, like visit_free_var
. Read moresourcefn visit_lifetime(
&mut self,
lifetime: &Lifetime<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
fn visit_lifetime(
&mut self,
lifetime: &Lifetime<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
Top-level callback: invoked for each
Lifetime<I>
that is
encountered when visiting. By default, invokes
super_visit_with
, which will in turn invoke the more
specialized visiting methods below, like visit_free_var
. Read moresourcefn visit_const(
&mut self,
constant: &Const<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
fn visit_const(
&mut self,
constant: &Const<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
Top-level callback: invoked for each
Const<I>
that is
encountered when visiting. By default, invokes
super_visit_with
, which will in turn invoke the more
specialized visiting methods below, like visit_free_var
. Read moresourcefn visit_program_clause(
&mut self,
clause: &ProgramClause<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
fn visit_program_clause(
&mut self,
clause: &ProgramClause<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
Invoked for every program clause. By default, recursively visits the goals contents.
sourcefn visit_goal(
&mut self,
goal: &Goal<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
fn visit_goal(
&mut self,
goal: &Goal<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
Invoked for every goal. By default, recursively visits the goals contents.
sourcefn visit_domain_goal(
&mut self,
domain_goal: &DomainGoal<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
fn visit_domain_goal(
&mut self,
domain_goal: &DomainGoal<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
Invoked for each domain goal.
sourcefn forbid_free_vars(&self) -> bool
fn forbid_free_vars(&self) -> bool
If overridden to return true, then visiting will panic if a
free variable is encountered. This should be done if free
type/lifetime/const variables are not expected. Read more
sourcefn forbid_free_placeholders(&self) -> bool
fn forbid_free_placeholders(&self) -> bool
If overridden to return true, we will panic when a free
placeholder type/lifetime is encountered. Read more
sourcefn visit_free_placeholder(
&mut self,
universe: PlaceholderIndex,
_outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
fn visit_free_placeholder(
&mut self,
universe: PlaceholderIndex,
_outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
Invoked for each occurrence of a placeholder type; these are
used when we instantiate binders universally. Read more
sourcefn visit_where_clause(
&mut self,
where_clause: &WhereClause<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
fn visit_where_clause(
&mut self,
where_clause: &WhereClause<I>,
outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
Invoked for each where clause.
sourcefn forbid_inference_vars(&self) -> bool
fn forbid_inference_vars(&self) -> bool
If overridden to return true, inference variables will trigger
panics when visited. Used when inference variables are
unexpected. Read more
sourcefn visit_inference_var(
&mut self,
var: InferenceVar,
_outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
fn visit_inference_var(
&mut self,
var: InferenceVar,
_outer_binder: DebruijnIndex
) -> ControlFlow<Self::BreakTy>
Invoked for each occurrence of a inference type; these are
used when we instantiate binders universally. Read more
Auto Trait Implementations
impl<I> RefUnwindSafe for FindFreeVarsVisitor<I>where
I: RefUnwindSafe,
impl<I> Send for FindFreeVarsVisitor<I>where
I: Send,
impl<I> Sync for FindFreeVarsVisitor<I>where
I: Sync,
impl<I> Unpin for FindFreeVarsVisitor<I>where
I: Unpin,
impl<I> UnwindSafe for FindFreeVarsVisitor<I>where
I: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Cast for T
impl<T> Cast for T
sourcefn cast<U>(self, interner: U::Interner) -> Uwhere
Self: CastTo<U>,
U: HasInterner,
fn cast<U>(self, interner: U::Interner) -> Uwhere
Self: CastTo<U>,
U: HasInterner,
Cast a value to type
U
using CastTo
.