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: bool
Implementations§
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