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)
enumtrait- 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: ModuleKindWhat 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: boolWhether #[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: SpanSpan of the module itself. Used for error reporting.
expansion: ExpnIdImplementations§
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
§impl<T> Filterable for T
impl<T> Filterable 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<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
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> 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