pub struct SymbolCollector<'db> {
db: &'db dyn HirDatabase,
symbols: FxIndexSet<FileSymbol<'db>>,
work: Vec<SymbolCollectorWork>,
current_container_name: Option<Symbol>,
collect_pub_only: bool,
}Fields§
§db: &'db dyn HirDatabase§symbols: FxIndexSet<FileSymbol<'db>>§work: Vec<SymbolCollectorWork>§current_container_name: Option<Symbol>§collect_pub_only: boolImplementations§
Source§impl<'a> SymbolCollector<'a>
Given a [ModuleId] and a HirDatabase, use the DefMap for the module’s crate to collect
all symbols that should be indexed for the given module.
impl<'a> SymbolCollector<'a>
Given a [ModuleId] and a HirDatabase, use the DefMap for the module’s crate to collect
all symbols that should be indexed for the given module.
pub fn new(db: &'a dyn HirDatabase, collect_pub_only: bool) -> Self
pub fn new_module( db: &'a dyn HirDatabase, module: Module, collect_pub_only: bool, ) -> Box<[FileSymbol<'a>]>
pub fn collect(&mut self, module: Module)
Sourcepub fn push_crate_root(&mut self, krate: Crate)
pub fn push_crate_root(&mut self, krate: Crate)
Push a symbol for a crate’s root module.
This allows crate roots to appear in the symbol index for queries like :: or ::foo.
pub fn finish(self) -> Box<[FileSymbol<'a>]>
fn do_work(&mut self, work: SymbolCollectorWork)
fn collect_from_module(&mut self, module_id: ModuleId)
fn collect_from_body( &mut self, body_id: impl Into<DefWithBodyId>, name: Option<Name>, )
fn collect_from_impl(&mut self, impl_id: ImplId)
fn collect_from_trait( &mut self, trait_id: TraitId, trait_do_not_complete: Complete, )
fn with_container_name( &mut self, container_name: Option<Symbol>, f: impl FnOnce(&mut Self), )
fn push_assoc_item( &mut self, assoc_item_id: AssocItemId, name: &Name, trait_do_not_complete: Option<Complete>, )
fn push_decl<L>(
&mut self,
id: L,
name: &Name,
is_assoc: bool,
trait_do_not_complete: Option<Complete>,
) -> Completewhere
L: Lookup<Database = dyn DefDatabase> + Into<ModuleDefId>,
<L as Lookup>::Data: HasSource,
<<L as Lookup>::Data as HasSource>::Value: HasName,
fn push_module(&mut self, module_id: ModuleId, name: &Name)
Auto Trait Implementations§
impl<'db> Freeze for SymbolCollector<'db>
impl<'db> !RefUnwindSafe for SymbolCollector<'db>
impl<'db> !Send for SymbolCollector<'db>
impl<'db> !Sync for SymbolCollector<'db>
impl<'db> Unpin for SymbolCollector<'db>
impl<'db> !UnwindSafe for SymbolCollector<'db>
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
§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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