pub struct FindUsages<'a> {
def: Definition,
rename: Option<&'a Rename>,
sema: &'a Semantics<'a, RootDatabase>,
scope: Option<&'a SearchScope>,
assoc_item_container: Option<AssocItemContainer>,
include_self_kw_refs: Option<Type<'a>>,
search_self_mod: bool,
}Fields§
§def: Definition§rename: Option<&'a Rename>§sema: &'a Semantics<'a, RootDatabase>§scope: Option<&'a SearchScope>§assoc_item_container: Option<AssocItemContainer>The container of our definition should it be an assoc item
include_self_kw_refs: Option<Type<'a>>whether to search for the Self type of the definition
search_self_mod: boolwhether to search for the self module
Implementations§
Source§impl<'a> FindUsages<'a>
impl<'a> FindUsages<'a>
Sourcepub fn include_self_refs(self) -> Self
pub fn include_self_refs(self) -> Self
Enable searching for Self when the definition is a type or self for modules.
Sourcepub fn in_scope(self, scope: &'a SearchScope) -> Self
pub fn in_scope(self, scope: &'a SearchScope) -> Self
Limit the search to a given SearchScope.
Sourcepub fn set_scope(self, scope: Option<&'a SearchScope>) -> Self
pub fn set_scope(self, scope: Option<&'a SearchScope>) -> Self
Limit the search to a given SearchScope.
pub fn with_rename(self, rename: Option<&'a Rename>) -> Self
pub fn at_least_one(&self) -> bool
pub fn all(self) -> UsageSearchResult
fn scope_files<'b>( db: &'b RootDatabase, scope: &'b SearchScope, ) -> impl Iterator<Item = (Arc<str>, EditionedFileId, TextRange)> + 'b
fn match_indices<'b>( text: &'b str, finder: &'b Finder<'b>, search_range: TextRange, ) -> impl Iterator<Item = TextSize> + 'b
fn find_nodes<'b>( sema: &'b Semantics<'_, RootDatabase>, name: &str, file_id: EditionedFileId, node: &SyntaxNode, offset: TextSize, ) -> impl Iterator<Item = SyntaxNode> + 'b
Sourcefn short_associated_function_fast_search(
&self,
sink: &mut dyn FnMut(EditionedFileId, FileReference) -> bool,
search_scope: &SearchScope,
name: &str,
) -> bool
fn short_associated_function_fast_search( &self, sink: &mut dyn FnMut(EditionedFileId, FileReference) -> bool, search_scope: &SearchScope, name: &str, ) -> bool
Performs a special fast search for associated functions. This is mainly intended
to speed up new() which can take a long time.
The trick is instead of searching for func_name search for TypeThatContainsContainerName::func_name.
We cannot search exactly that (not even in tokens), because ContainerName may be aliased.
Instead, we perform a textual search for ContainerName. Then, we look for all cases where
ContainerName may be aliased (that includes use ContainerName as Xyz and
type Xyz = ContainerName). We collect a list of all possible aliases of ContainerName.
The list can have false positives (because there may be multiple types named ContainerName),
but it cannot have false negatives. Then, we look for TypeThatContainsContainerNameOrAnyAlias::func_name.
Those that will be found are of high chance to be actual hits (of course, we will need to verify
that).
Returns true if completed the search.
pub fn search( &self, sink: &mut dyn FnMut(EditionedFileId, FileReference) -> bool, )
fn found_self_ty_name_ref( &self, self_ty: &Type<'_>, name_ref: &NameRef, sink: &mut dyn FnMut(EditionedFileId, FileReference) -> bool, ) -> bool
fn found_self_module_name_ref( &self, name_ref: &NameRef, sink: &mut dyn FnMut(EditionedFileId, FileReference) -> bool, ) -> bool
fn found_format_args_ref( &self, file_id: EditionedFileId, range: TextRange, token: String, res: Either<PathResolution, InlineAsmOperand>, sink: &mut dyn FnMut(EditionedFileId, FileReference) -> bool, ) -> bool
fn found_lifetime( &self, lifetime: &Lifetime, sink: &mut dyn FnMut(EditionedFileId, FileReference) -> bool, ) -> bool
fn found_name_ref( &self, name_ref: &NameRef, sink: &mut dyn FnMut(EditionedFileId, FileReference) -> bool, ) -> bool
fn found_name( &self, name: &Name, sink: &mut dyn FnMut(EditionedFileId, FileReference) -> bool, ) -> bool
Trait Implementations§
Source§impl<'a> Clone for FindUsages<'a>
impl<'a> Clone for FindUsages<'a>
Source§fn clone(&self) -> FindUsages<'a>
fn clone(&self) -> FindUsages<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl<'a> Freeze for FindUsages<'a>
impl<'a> !RefUnwindSafe for FindUsages<'a>
impl<'a> !Send for FindUsages<'a>
impl<'a> !Sync for FindUsages<'a>
impl<'a> Unpin for FindUsages<'a>
impl<'a> !UnwindSafe for FindUsages<'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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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> ⓘ
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> ⓘ
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