pub(crate) struct NameResolution<'ra> {
pub single_imports: FxIndexSet<Interned<'ra, ImportData<'ra>>>,
pub non_glob_decl: Option<Interned<'ra, DeclData<'ra>>>,
pub glob_decl: Option<Interned<'ra, DeclData<'ra>>>,
pub orig_ident_span: Span,
}Expand description
Records information about the resolution of a name in a namespace of a module.
Fields§
§single_imports: FxIndexSet<Interned<'ra, ImportData<'ra>>>Single imports that may define the name in the namespace. Imports are arena-allocated, so it’s ok to use pointers as keys.
non_glob_decl: Option<Interned<'ra, DeclData<'ra>>>The non-glob declaration for this name, if it is known to exist.
glob_decl: Option<Interned<'ra, DeclData<'ra>>>The glob declaration for this name, if it is known to exist.
orig_ident_span: SpanImplementations§
Source§impl<'ra> NameResolution<'ra>
impl<'ra> NameResolution<'ra>
pub(crate) fn new(orig_ident_span: Span) -> Self
Sourcepub(crate) fn determined_decl(&self) -> Option<Interned<'ra, DeclData<'ra>>>
pub(crate) fn determined_decl(&self) -> Option<Interned<'ra, DeclData<'ra>>>
Returns the best declaration if it is not going to change, and None if the best
declaration may still change to something else.
FIXME: this function considers single_imports, but not unexpanded_invocations, so
the returned declaration may actually change after expanding macros in the same module,
because of this fact we have glob overwriting (select_glob_decl). Consider using
unexpanded_invocations here and avoiding glob overwriting entirely, if it doesn’t cause
code breakage in practice.
FIXME: relationship between this function and similar DeclData::determined is unclear.
pub(crate) fn best_decl(&self) -> Option<Interned<'ra, DeclData<'ra>>>
Trait Implementations§
Source§impl<'ra> Clone for NameResolution<'ra>
impl<'ra> Clone for NameResolution<'ra>
Source§fn clone(&self) -> NameResolution<'ra>
fn clone(&self) -> NameResolution<'ra>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl<'ra> !DynSend for NameResolution<'ra>
impl<'ra> !DynSync for NameResolution<'ra>
impl<'ra> Freeze for NameResolution<'ra>
impl<'ra> !RefUnwindSafe for NameResolution<'ra>
impl<'ra> !Send for NameResolution<'ra>
impl<'ra> !Sync for NameResolution<'ra>
impl<'ra> Unpin for NameResolution<'ra>
impl<'ra> UnsafeUnpin for NameResolution<'ra>
impl<'ra> !UnwindSafe for NameResolution<'ra>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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
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: 80 bytes