use std::collections::VecDeque;
use std::path::Path;
#[derive(Debug, Copy, Clone)]
pub enum PathElement {
Root,
ObjectRoot,
ArrayElement(usize),
ObjectKey(u64),
}
#[derive(Default, Clone)]
pub struct PathElementStack {
vec: Vec<PathElement>,
}
impl PathElementStack {
pub fn push(&mut self, element: PathElement) {
self.vec.push(element);
}
pub fn pop(&mut self) -> Option<PathElement> {
self.vec.pop()
}
pub fn peek(&self) -> Option<&PathElement> {
self.vec.first()
}
pub fn clear(&mut self) {
self.vec.clear()
}
pub fn len(&self) -> usize {
self.vec.len()
}
pub fn is_empty(&self) -> bool {
self.vec.is_empty()
}
}