pub struct PatternMatcher { /* private fields */ }Expand description
Pattern matcher using ast-grep’s metavariable syntax.
§Metavariable Syntax
$NAME- Matches a single node and captures it$$$NAME- Matches zero or more nodes (variadic)$_- Matches any single node (anonymous)
§Example Patterns
fn $NAME($$$PARAMS) { $$$BODY } // Match function definition
struct $NAME { $$$FIELDS } // Match struct definition
$EXPR.clone() // Match .clone() calls
OtelExporter::$VARIANT // Match enum variantsImplementations§
Source§impl PatternMatcher
impl PatternMatcher
Sourcepub fn find_all(&self, pattern: &str) -> Result<Vec<PatternMatch>, AstGrepError>
pub fn find_all(&self, pattern: &str) -> Result<Vec<PatternMatch>, AstGrepError>
Find all matches for a pattern.
Sourcepub fn find_unique(&self, pattern: &str) -> Result<PatternMatch, AstGrepError>
pub fn find_unique(&self, pattern: &str) -> Result<PatternMatch, AstGrepError>
Find exactly one match for a pattern.
Sourcepub fn find_in_range(
&self,
pattern: &str,
start: usize,
end: usize,
) -> Result<Vec<PatternMatch>, AstGrepError>
pub fn find_in_range( &self, pattern: &str, start: usize, end: usize, ) -> Result<Vec<PatternMatch>, AstGrepError>
Find matches within a specific byte range (for context constraints).
Sourcepub fn find_in_function(
&self,
pattern: &str,
function_name: &str,
) -> Result<Vec<PatternMatch>, AstGrepError>
pub fn find_in_function( &self, pattern: &str, function_name: &str, ) -> Result<Vec<PatternMatch>, AstGrepError>
Find matches that are inside a function with the given name.
Sourcepub fn find_by_kind_with_field(
&self,
kind: &str,
field_filter: Option<(&str, &str)>,
) -> Result<Vec<PatternMatch>, AstGrepError>
pub fn find_by_kind_with_field( &self, kind: &str, field_filter: Option<(&str, &str)>, ) -> Result<Vec<PatternMatch>, AstGrepError>
Find all nodes of a specific kind, optionally filtering by a pattern on a field.
This is useful for constructs that aren’t valid standalone Rust syntax,
like match arms (PAT => BODY). Since match arms can’t be parsed in
isolation, we find them by kind and optionally filter by matching a
pattern against a specific field.
§Example
ⓘ
// Find all match arms where the pattern is OtelExporter::Statsig
let arms = matcher.find_by_kind_with_field(
"match_arm",
Some(("pattern", "OtelExporter::Statsig")),
)?;Sourcepub fn find_match_arms(
&self,
pattern: &str,
) -> Result<Vec<PatternMatch>, AstGrepError>
pub fn find_match_arms( &self, pattern: &str, ) -> Result<Vec<PatternMatch>, AstGrepError>
Auto Trait Implementations§
impl Freeze for PatternMatcher
impl RefUnwindSafe for PatternMatcher
impl Send for PatternMatcher
impl Sync for PatternMatcher
impl Unpin for PatternMatcher
impl UnsafeUnpin for PatternMatcher
impl UnwindSafe for PatternMatcher
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