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: usizeNumber of errors emitted so far.
current_depth: usizeCurrent nesting depth.
max_depth_reached: usizeMaximum depth reached during parse.
tokens_skipped: usizeTotal tokens skipped across all recovery attempts.
recoveries_attempted: usizeNumber of recovery attempts made.
Implementations§
Source§impl BudgetTracker
impl BudgetTracker
Sourcepub fn new() -> BudgetTracker
pub fn new() -> BudgetTracker
Create a new budget tracker.
Sourcepub fn errors_exhausted(&self, budget: &ParseBudget) -> bool
pub fn errors_exhausted(&self, budget: &ParseBudget) -> bool
Check if error budget is exhausted.
Sourcepub fn depth_would_exceed(&self, budget: &ParseBudget) -> bool
pub fn depth_would_exceed(&self, budget: &ParseBudget) -> bool
Check if depth budget would be exceeded by going one level deeper.
Sourcepub fn skip_would_exceed(&self, budget: &ParseBudget, count: usize) -> bool
pub fn skip_would_exceed(&self, budget: &ParseBudget, count: usize) -> bool
Check if skip budget would be exceeded by skipping count more tokens.
Sourcepub fn recoveries_exhausted(&self, budget: &ParseBudget) -> bool
pub fn recoveries_exhausted(&self, budget: &ParseBudget) -> bool
Check if recovery budget is exhausted.
Sourcepub fn begin_recovery(&mut self, budget: &ParseBudget) -> bool
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.
Sourcepub fn can_skip_more(&self, budget: &ParseBudget, additional: usize) -> bool
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.
Sourcepub fn record_error(&mut self)
pub fn record_error(&mut self)
Record an error emission.
Sourcepub fn enter_depth(&mut self)
pub fn enter_depth(&mut self)
Enter a deeper nesting level.
Sourcepub fn exit_depth(&mut self)
pub fn exit_depth(&mut self)
Exit a nesting level.
Sourcepub fn record_skip(&mut self, count: usize)
pub fn record_skip(&mut self, count: usize)
Record tokens skipped during recovery.
Sourcepub fn record_recovery(&mut self)
pub fn record_recovery(&mut self)
Record a recovery attempt.
Trait Implementations§
Source§impl Clone for BudgetTracker
impl Clone for BudgetTracker
Source§fn clone(&self) -> BudgetTracker
fn clone(&self) -> BudgetTracker
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more