Struct rustc_resolve::ModuleData [−][src]
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<&'a ModuleData<'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.
nearest_parent_mod: DefIdThe DefId of the nearest mod item ancestor (which may be this module).
This may be the crate root.
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<ExpnId>>Macro invocations that can expand into items in this module.
no_implicit_prelude: boolWhether #[no_implicit_prelude] is active.
glob_importers: RefCell<Vec<&'a Import<'a>>>globs: RefCell<Vec<&'a Import<'a>>>traits: RefCell<Option<Box<[(Ident, &'a NameBinding<'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
impl<'a> ModuleData<'a>[src]
pub(crate) fn new(
parent: Option<&'a ModuleData<'a>>,
kind: ModuleKind,
nearest_parent_mod: DefId,
expansion: ExpnId,
span: Span
) -> Self[src]
parent: Option<&'a ModuleData<'a>>,
kind: ModuleKind,
nearest_parent_mod: DefId,
expansion: ExpnId,
span: Span
) -> Self
pub(crate) fn for_each_child<R, F>(&'a self, resolver: &mut R, f: F) where
R: AsMut<Resolver<'a>>,
F: FnMut(&mut R, Ident, Namespace, &'a NameBinding<'a>), [src]
R: AsMut<Resolver<'a>>,
F: FnMut(&mut R, Ident, Namespace, &'a NameBinding<'a>),
pub(crate) fn ensure_traits<R>(&'a self, resolver: &mut R) where
R: AsMut<Resolver<'a>>, [src]
R: AsMut<Resolver<'a>>,
This modifies self in place. The traits will be stored in self.traits.
pub(crate) fn res(&self) -> Option<Res<NodeId>>[src]
pub(crate) fn def_id(&self) -> Option<DefId>[src]
pub(crate) fn is_normal(&self) -> bool[src]
pub(crate) fn is_trait(&self) -> bool[src]
pub(crate) fn nearest_item_scope(&'a self) -> &'a ModuleData<'a>[src]
pub(crate) fn is_ancestor_of(&self, other: &Self) -> bool[src]
Trait Implementations
Auto Trait Implementations
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
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,