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