Skip to main content

BudgetTracker

Struct BudgetTracker 

Source
pub struct BudgetTracker {
    pub errors_emitted: usize,
    pub current_depth: usize,
    pub max_depth_reached: usize,
    pub tokens_skipped: usize,
    pub recoveries_attempted: usize,
}
Expand description

Parse error, budget, and output types. Error types and result aliases used by the parser engine. Tracks budget consumption during parsing.

This struct monitors how much of the parse budget has been used and provides methods to check and consume budget atomically.

Fields§

§errors_emitted: usize

Number of errors emitted so far.

§current_depth: usize

Current nesting depth.

§max_depth_reached: usize

Maximum depth reached during parse.

§tokens_skipped: usize

Total tokens skipped across all recovery attempts.

§recoveries_attempted: usize

Number of recovery attempts made.

Implementations§

Source§

impl BudgetTracker

Source

pub fn new() -> BudgetTracker

Create a new budget tracker.

Source

pub fn errors_exhausted(&self, budget: &ParseBudget) -> bool

Check if error budget is exhausted.

Source

pub fn depth_would_exceed(&self, budget: &ParseBudget) -> bool

Check if depth budget would be exceeded by going one level deeper.

Source

pub fn skip_would_exceed(&self, budget: &ParseBudget, count: usize) -> bool

Check if skip budget would be exceeded by skipping count more tokens.

Source

pub fn recoveries_exhausted(&self, budget: &ParseBudget) -> bool

Check if recovery budget is exhausted.

Source

pub fn begin_recovery(&mut self, budget: &ParseBudget) -> bool

Begin a recovery attempt, checking budget first.

Returns false if another recovery attempt would exceed the budget. If this returns true, the recovery attempt has been recorded.

Source

pub fn can_skip_more(&self, budget: &ParseBudget, additional: usize) -> bool

Check if skipping additional more tokens would stay within budget.

This considers both already-skipped tokens and the proposed additional count.

Source

pub fn record_error(&mut self)

Record an error emission.

Source

pub fn enter_depth(&mut self)

Enter a deeper nesting level.

Source

pub fn exit_depth(&mut self)

Exit a nesting level.

Source

pub fn record_skip(&mut self, count: usize)

Record tokens skipped during recovery.

Source

pub fn record_recovery(&mut self)

Record a recovery attempt.

Trait Implementations§

Source§

impl Clone for BudgetTracker

Source§

fn clone(&self) -> BudgetTracker

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for BudgetTracker

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for BudgetTracker

Source§

fn default() -> BudgetTracker

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

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> 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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> 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 = 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>,

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

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more