pub(crate) struct ModResolver<'ast, 'psess> {
psess: &'psess ParseSess,
directory: Directory,
file_map: BTreeMap<FileName, Module<'ast>>,
recursive: bool,
}Expand description
Maps each module to the corresponding file.
Fields§
§psess: &'psess ParseSess§directory: Directory§file_map: BTreeMap<FileName, Module<'ast>>§recursive: boolImplementations§
Source§impl<'ast, 'psess, 'c> ModResolver<'ast, 'psess>
impl<'ast, 'psess, 'c> ModResolver<'ast, 'psess>
Sourcepub(crate) fn new(
psess: &'psess ParseSess,
directory_ownership: DirOwnership,
recursive: bool,
) -> Self
pub(crate) fn new( psess: &'psess ParseSess, directory_ownership: DirOwnership, recursive: bool, ) -> Self
Creates a new ModResolver.
Sourcepub(crate) fn visit_crate(
self,
krate: &'ast Crate,
) -> Result<BTreeMap<FileName, Module<'ast>>, ModuleResolutionError>
pub(crate) fn visit_crate( self, krate: &'ast Crate, ) -> Result<BTreeMap<FileName, Module<'ast>>, ModuleResolutionError>
Creates a map that maps a file name to the module in AST.
Sourcefn visit_cfg_if(
&mut self,
item: Cow<'ast, Item>,
) -> Result<(), ModuleResolutionError>
fn visit_cfg_if( &mut self, item: Cow<'ast, Item>, ) -> Result<(), ModuleResolutionError>
Visit cfg_if macro and look for module declarations.
Sourcefn visit_mod_outside_ast(
&mut self,
items: ThinVec<P<Item>>,
) -> Result<(), ModuleResolutionError>
fn visit_mod_outside_ast( &mut self, items: ThinVec<P<Item>>, ) -> Result<(), ModuleResolutionError>
Visit modules defined inside macro calls.
Sourcefn visit_mod_from_ast(
&mut self,
items: &'ast [P<Item>],
) -> Result<(), ModuleResolutionError>
fn visit_mod_from_ast( &mut self, items: &'ast [P<Item>], ) -> Result<(), ModuleResolutionError>
Visit modules from AST.
fn visit_sub_mod( &mut self, item: &'c Item, sub_mod: Module<'ast>, ) -> Result<(), ModuleResolutionError>
Sourcefn peek_sub_mod(
&self,
item: &'c Item,
sub_mod: &Module<'ast>,
) -> Result<Option<SubModKind<'c, 'ast>>, ModuleResolutionError>
fn peek_sub_mod( &self, item: &'c Item, sub_mod: &Module<'ast>, ) -> Result<Option<SubModKind<'c, 'ast>>, ModuleResolutionError>
Inspect the given sub-module which we are about to visit and returns its kind.
fn insert_sub_mod( &mut self, sub_mod_kind: SubModKind<'c, 'ast>, ) -> Result<(), ModuleResolutionError>
fn visit_sub_mod_inner( &mut self, sub_mod: Module<'ast>, sub_mod_kind: SubModKind<'c, 'ast>, ) -> Result<(), ModuleResolutionError>
fn visit_sub_mod_after_directory_update( &mut self, sub_mod: Module<'ast>, directory: Option<Directory>, ) -> Result<(), ModuleResolutionError>
Sourcefn find_external_module(
&self,
mod_name: Ident,
attrs: &[Attribute],
sub_mod: &Module<'ast>,
) -> Result<Option<SubModKind<'c, 'ast>>, ModuleResolutionError>
fn find_external_module( &self, mod_name: Ident, attrs: &[Attribute], sub_mod: &Module<'ast>, ) -> Result<Option<SubModKind<'c, 'ast>>, ModuleResolutionError>
Find a file path in the filesystem which corresponds to the given module.
fn push_inline_mod_directory(&mut self, id: Ident, attrs: &[Attribute])
fn find_mods_outside_of_ast( &self, attrs: &[Attribute], sub_mod: &Module<'ast>, ) -> Vec<(PathBuf, DirOwnership, Module<'ast>)>
Auto Trait Implementations§
impl<'ast, 'psess> Freeze for ModResolver<'ast, 'psess>
impl<'ast, 'psess> !RefUnwindSafe for ModResolver<'ast, 'psess>
impl<'ast, 'psess> !Send for ModResolver<'ast, 'psess>
impl<'ast, 'psess> !Sync for ModResolver<'ast, 'psess>
impl<'ast, 'psess> Unpin for ModResolver<'ast, 'psess>
impl<'ast, 'psess> !UnwindSafe for ModResolver<'ast, 'psess>
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> 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 more§impl<T> Pointable for T
impl<T> Pointable for 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>
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