Skip to main content

NameMatcher

Struct NameMatcher 

Source
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>

Source

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.

Source

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.

Source

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>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for NameMatcher<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.