Struct rustc_typeck::check::wfcheck::GATSubstCollector
source · struct GATSubstCollector<'tcx> {
gat: DefId,
regions: FxHashSet<(Region<'tcx>, usize)>,
types: FxHashSet<(Ty<'tcx>, usize)>,
}
Expand description
TypeVisitor that looks for uses of GATs like
<P0 as Trait<P1..Pn>>::GAT<Pn..Pm>
and adds the arguments P0..Pm
into
the two vectors, regions
and types
(depending on their kind). For each
parameter Pi
also track the index i
.
Fields
gat: DefId
regions: FxHashSet<(Region<'tcx>, usize)>
types: FxHashSet<(Ty<'tcx>, usize)>
Implementations
sourceimpl<'tcx> GATSubstCollector<'tcx>
impl<'tcx> GATSubstCollector<'tcx>
Trait Implementations
sourceimpl<'tcx> TypeVisitor<'tcx> for GATSubstCollector<'tcx>
impl<'tcx> TypeVisitor<'tcx> for GATSubstCollector<'tcx>
type BreakTy = !
fn visit_ty(&mut self, t: Ty<'tcx>) -> ControlFlow<Self::BreakTy>
fn visit_binder<T>(
&mut self,
t: &Binder<'tcx, T>
) -> ControlFlow<Self::BreakTy, ()>where
T: TypeVisitable<'tcx>,
fn visit_region(&mut self, r: Region<'tcx>) -> ControlFlow<Self::BreakTy, ()>
fn visit_const(&mut self, c: Const<'tcx>) -> ControlFlow<Self::BreakTy, ()>
fn visit_unevaluated(
&mut self,
uv: Unevaluated<'tcx, Option<Promoted>>
) -> ControlFlow<Self::BreakTy, ()>
fn visit_predicate(
&mut self,
p: Predicate<'tcx>
) -> ControlFlow<Self::BreakTy, ()>
fn visit_mir_const(
&mut self,
c: ConstantKind<'tcx>
) -> ControlFlow<Self::BreakTy, ()>
Auto Trait Implementations
impl<'tcx> !RefUnwindSafe for GATSubstCollector<'tcx>
impl<'tcx> Send for GATSubstCollector<'tcx>
impl<'tcx> Sync for GATSubstCollector<'tcx>
impl<'tcx> Unpin for GATSubstCollector<'tcx>
impl<'tcx> !UnwindSafe for GATSubstCollector<'tcx>
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
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
Layout
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 72 bytes