pub struct StackSafeContext {
pub depth: usize,
pub max_depth: usize,
pub active_stack: Vec<(u32, u16)>,
pub completed_refs: HashSet<(u32, u16)>,
pub start_time: Instant,
pub timeout: Duration,
}Expand description
Stack-safe parsing context
Fields§
§depth: usizeCurrent recursion depth
max_depth: usizeMaximum allowed depth
active_stack: Vec<(u32, u16)>Pila de referencias activas (para detectar ciclos reales)
completed_refs: HashSet<(u32, u16)>Referencias completamente procesadas (no son ciclos)
start_time: InstantStart time for timeout tracking
timeout: DurationTimeout duration
Implementations§
Source§impl StackSafeContext
impl StackSafeContext
Sourcepub fn with_limits(max_depth: usize, timeout_secs: u64) -> Self
pub fn with_limits(max_depth: usize, timeout_secs: u64) -> Self
Create a new context with custom limits
Sourcepub fn enter(&mut self) -> ParseResult<()>
pub fn enter(&mut self) -> ParseResult<()>
Enter a new recursion level
Sourcepub fn push_ref(&mut self, obj_num: u32, gen_num: u16) -> ParseResult<()>
pub fn push_ref(&mut self, obj_num: u32, gen_num: u16) -> ParseResult<()>
Push a reference onto the active stack (for cycle detection)
Sourcepub fn check_timeout(&self) -> ParseResult<()>
pub fn check_timeout(&self) -> ParseResult<()>
Check if parsing has timed out
Trait Implementations§
Source§impl Debug for StackSafeContext
impl Debug for StackSafeContext
Auto Trait Implementations§
impl Freeze for StackSafeContext
impl RefUnwindSafe for StackSafeContext
impl Send for StackSafeContext
impl Sync for StackSafeContext
impl Unpin for StackSafeContext
impl UnwindSafe for StackSafeContext
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