Struct rustc_resolve::ModuleData
source · pub(crate) struct ModuleData<'a> {
pub(crate) parent: Option<Module<'a>>,
pub(crate) kind: ModuleKind,
pub(crate) lazy_resolutions: RefCell<FxIndexMap<BindingKey, &'a RefCell<NameResolution<'a>>>>,
pub(crate) populate_on_access: Cell<bool>,
pub(crate) unexpanded_invocations: RefCell<FxHashSet<LocalExpnId>>,
pub(crate) no_implicit_prelude: bool,
pub(crate) glob_importers: RefCell<Vec<Interned<'a, ImportData<'a>>>>,
pub(crate) globs: RefCell<Vec<Interned<'a, ImportData<'a>>>>,
pub(crate) traits: RefCell<Option<Box<[(Ident, Interned<'a, NameBindingData<'a>>)]>>>,
pub(crate) span: Span,
pub(crate) expansion: ExpnId,
}
Expand description
One node in the tree of modules.
Note that a “module” in resolve is broader than a mod
that you declare in Rust code. It may be one of these:
mod
- crate root (aka, top-level anonymous module)
enum
trait
- curly-braced block with statements
You can use ModuleData::kind
to determine the kind of module this is.
Fields§
§parent: Option<Module<'a>>
The direct parent module (it may not be a mod
, however).
kind: ModuleKind
What kind of module this is, because this may not be a mod
.
lazy_resolutions: RefCell<FxIndexMap<BindingKey, &'a RefCell<NameResolution<'a>>>>
Mapping between names and their (possibly in-progress) resolutions in this module. Resolutions in modules from other crates are not populated until accessed.
populate_on_access: Cell<bool>
True if this is a module from other crate that needs to be populated on access.
unexpanded_invocations: RefCell<FxHashSet<LocalExpnId>>
Macro invocations that can expand into items in this module.
no_implicit_prelude: bool
Whether #[no_implicit_prelude]
is active.
glob_importers: RefCell<Vec<Interned<'a, ImportData<'a>>>>
§globs: RefCell<Vec<Interned<'a, ImportData<'a>>>>
§traits: RefCell<Option<Box<[(Ident, Interned<'a, NameBindingData<'a>>)]>>>
Used to memoize the traits in this module for faster searches through all traits in scope.
span: Span
Span of the module itself. Used for error reporting.
expansion: ExpnId
Implementations§
Auto Trait Implementations§
impl<'a> !DynSend for ModuleData<'a>
impl<'a> !DynSync for ModuleData<'a>
impl<'a> !Freeze for ModuleData<'a>
impl<'a> !RefUnwindSafe for ModuleData<'a>
impl<'a> !Send for ModuleData<'a>
impl<'a> !Sync for ModuleData<'a>
impl<'a> Unpin for ModuleData<'a>
impl<'a> !UnwindSafe for ModuleData<'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
source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
source§impl<T> Filterable for T
impl<T> Filterable for T
source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
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<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
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<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed, ) -> 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<'a, T> Captures<'a> for Twhere
T: ?Sized,
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: 240 bytes