pub struct NameMatcher<'a> { /* private fields */ }Expand description
A reusable text prefilter for an identifier or keyword.
A match only indicates that a source may contain the name: matches in
comments and strings are included. Matchers created with Self::new accept
sources that change under NFKC normalization because Python normalizes
identifiers this way. Matchers created with Self::keyword search their literal
spelling instead. Callers should validate candidates using the AST or semantic analysis.
Construct a matcher once and reuse it across sources to avoid preprocessing
the name for each source. Cache matchers for fixed names in a std::sync::LazyLock.
Implementations§
Source§impl<'a> NameMatcher<'a>
impl<'a> NameMatcher<'a>
Sourcepub fn new(name: &'a str) -> Self
pub fn new(name: &'a str) -> Self
Creates an identifier matcher that borrows name without allocating.
The identifier name is expected to be NFKC-normalized.
Sourcepub fn keyword(keyword: &'a str) -> Self
pub fn keyword(keyword: &'a str) -> Self
Creates a keyword matcher that borrows keyword without allocating.
Python recognizes keywords by their literal spelling, without NFKC normalization, so keyword matchers skip the normalization check.
Sourcepub fn may_match(&self, source: &str) -> bool
pub fn may_match(&self, source: &str) -> bool
Returns whether source may contain the configured identifier or keyword.
Identifier matchers conservatively return true if the source changes under
NFKC normalization. Otherwise, searches for the literal spelling bounded by bytes
other than ASCII letters, digits or _. Matches may occur in comments, strings,
or Unicode identifiers.
Trait Implementations§
Source§impl<'a> Clone for NameMatcher<'a>
impl<'a> Clone for NameMatcher<'a>
Auto Trait Implementations§
impl<'a> Freeze for NameMatcher<'a>
impl<'a> RefUnwindSafe for NameMatcher<'a>
impl<'a> Send for NameMatcher<'a>
impl<'a> Sync for NameMatcher<'a>
impl<'a> Unpin for NameMatcher<'a>
impl<'a> UnsafeUnpin for NameMatcher<'a>
impl<'a> UnwindSafe for NameMatcher<'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,
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