Struct tree_sitter::QueryCursor

source ·
pub struct QueryCursor { /* private fields */ }
Expand description

A stateful object for executing a Query on a syntax Tree.

Implementations§

source§

impl QueryCursor

source

pub const unsafe fn from_raw(ptr: *mut TSQueryCursor) -> Self

Reconstructs a QueryCursor from a raw pointer.

§Safety

ptr must be non-null.

source

pub fn into_raw(self) -> *mut TSQueryCursor

Consumes the QueryCursor, returning a raw pointer to the underlying C structure.

source§

impl QueryCursor

source

pub fn new() -> Self

Create a new cursor for executing a given query.

The cursor stores the state that is needed to iteratively search for matches.

source

pub fn match_limit(&self) -> u32

Return the maximum number of in-progress matches for this cursor.

source

pub fn set_match_limit(&mut self, limit: u32)

Set the maximum number of in-progress matches for this cursor. The limit must be > 0 and <= 65536.

source

pub fn did_exceed_match_limit(&self) -> bool

Check if, on its last execution, this cursor exceeded its maximum number of in-progress matches.

source

pub fn matches<'query, 'cursor: 'query, 'tree, T: TextProvider<I>, I: AsRef<[u8]>>( &'cursor mut self, query: &'query Query, node: Node<'tree>, text_provider: T ) -> QueryMatches<'query, 'tree, T, I>

Iterate over all of the matches in the order that they were found.

Each match contains the index of the pattern that matched, and a list of captures. Because multiple patterns can match the same set of nodes, one match may contain captures that appear before some of the captures from a previous match.

source

pub fn captures<'query, 'cursor: 'query, 'tree, T: TextProvider<I>, I: AsRef<[u8]>>( &'cursor mut self, query: &'query Query, node: Node<'tree>, text_provider: T ) -> QueryCaptures<'query, 'tree, T, I>

Iterate over all of the individual captures in the order that they appear.

This is useful if you don’t care about which pattern matched, and just want a single, ordered sequence of captures.

source

pub fn set_byte_range(&mut self, range: Range<usize>) -> &mut Self

Set the range in which the query will be executed, in terms of byte offsets.

source

pub fn set_point_range(&mut self, range: Range<Point>) -> &mut Self

Set the range in which the query will be executed, in terms of rows and columns.

source

pub fn set_max_start_depth(&mut self, max_start_depth: Option<u32>) -> &mut Self

Set the maximum start depth for a query cursor.

This prevents cursors from exploring children nodes at a certain depth. Note if a pattern includes many children, then they will still be checked.

The zero max start depth value can be used as a special behavior and it helps to destructure a subtree by staying on a node and using captures for interested parts. Note that the zero max start depth only limit a search depth for a pattern’s root node but other nodes that are parts of the pattern may be searched at any depth what defined by the pattern structure.

Set to None to remove the maximum start depth.

Trait Implementations§

source§

impl Default for QueryCursor

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Drop for QueryCursor

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl Send for QueryCursor

source§

impl Sync for QueryCursor

Auto Trait Implementations§

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> 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, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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.