pub(crate) struct DefIdsToImplsCollector<'tcx, 'a> {
pub(crate) tcx: TyCtxt<'tcx>,
pub(crate) def_ids_to_impls: &'a mut FxHashMap<LocalDefId, FxHashSet<LocalDefId>>,
pub(crate) impl_def_id: LocalDefId,
}Expand description
Visitor that collects correspondence map between defs and enclosing impls.
Fields§
§tcx: TyCtxt<'tcx>§def_ids_to_impls: &'a mut FxHashMap<LocalDefId, FxHashSet<LocalDefId>>§impl_def_id: LocalDefIdImplementations§
Source§impl<'tcx, 'a> DefIdsToImplsCollector<'tcx, 'a>
impl<'tcx, 'a> DefIdsToImplsCollector<'tcx, 'a>
pub(crate) fn collect( tcx: TyCtxt<'tcx>, ) -> FxHashMap<LocalDefId, FxHashSet<LocalDefId>>
Trait Implementations§
Source§impl<'tcx, 'a> DefIdVisitor<'tcx> for DefIdsToImplsCollector<'tcx, 'a>
impl<'tcx, 'a> DefIdVisitor<'tcx> for DefIdsToImplsCollector<'tcx, 'a>
const SHALLOW: bool = true
fn skip_assoc_tys(&self) -> bool
fn tcx(&self) -> TyCtxt<'tcx>
Source§fn visit_def_id(&mut self, def_id: DefId, _kind: &str, _descr: &dyn Display)
fn visit_def_id(&mut self, def_id: DefId, _kind: &str, _descr: &dyn Display)
NOTE: Def-id visiting should be idempotent (or at least produce duplicated errors),
because
DefIdVisitorSkeleton will use caching and sometimes avoid visiting duplicate
def-ids. All the current visitors follow this rule.type Result = ()
Source§fn skeleton(&mut self) -> DefIdVisitorSkeleton<'_, 'tcx, Self>
fn skeleton(&mut self) -> DefIdVisitorSkeleton<'_, 'tcx, Self>
Not overridden, but used to actually visit types and traits.
fn visit( &mut self, ty_fragment: impl TypeVisitable<TyCtxt<'tcx>>, ) -> Self::Result
fn visit_trait(&mut self, trait_ref: TraitRef<'tcx>) -> Self::Result
fn visit_predicates( &mut self, predicates: GenericPredicates<'tcx>, ) -> Self::Result
fn visit_clauses(&mut self, clauses: &[(Clause<'tcx>, Span)]) -> Self::Result
Auto Trait Implementations§
impl<'tcx, 'a> DynSend for DefIdsToImplsCollector<'tcx, 'a>
impl<'tcx, 'a> DynSync for DefIdsToImplsCollector<'tcx, 'a>
impl<'tcx, 'a> Freeze for DefIdsToImplsCollector<'tcx, 'a>
impl<'tcx, 'a> !RefUnwindSafe for DefIdsToImplsCollector<'tcx, 'a>
impl<'tcx, 'a> !Send for DefIdsToImplsCollector<'tcx, 'a>
impl<'tcx, 'a> !Sync for DefIdsToImplsCollector<'tcx, 'a>
impl<'tcx, 'a> Unpin for DefIdsToImplsCollector<'tcx, 'a>
impl<'tcx, 'a> UnsafeUnpin for DefIdsToImplsCollector<'tcx, 'a>
impl<'tcx, 'a> !UnwindSafe for DefIdsToImplsCollector<'tcx, 'a>
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
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 moreSource§impl<K> IntoQueryKey<K> for K
impl<K> IntoQueryKey<K> for K
Source§fn into_query_key(self) -> K
fn into_query_key(self) -> K
Argument conversion from
Self to K.
This should always be a very cheap conversion, e.g. LocalDefId::to_def_id.Source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
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: 24 bytes