use crate::{Doc, DocPtr};
pub fn visit_sequence_rev<'a, 'd, T>(
mut doc: &'d Doc<'a, T>,
visitor: &mut impl FnMut(&'d Doc<'a, T>),
) -> &'d Doc<'a, T>
where
T: DocPtr<'a>,
{
while let Doc::Append(l, r) = doc {
visitor(r);
doc = l;
}
doc
}
pub fn visit_sequence_deep<'a, 'd, T>(
mut doc: &'d Doc<'a, T>,
visitor: &mut impl FnMut(&'d Doc<'a, T>),
) where
T: DocPtr<'a>,
{
while let Doc::Append(l, r) = doc {
visit_sequence_deep(l, visitor);
doc = r;
}
visitor(doc);
}