icydb_core/visitor/
sanitize.rs

1use crate::{
2    traits::Visitable,
3    visitor::{Event, VisitorMut},
4};
5
6///
7/// SanitizeVisitor
8/// Walks a tree and applies sanitize() on every node
9///
10
11#[derive(Debug, Default)]
12pub struct SanitizeVisitor;
13
14impl SanitizeVisitor {
15    #[must_use]
16    pub const fn new() -> Self {
17        Self
18    }
19}
20
21///
22/// perform_visit_mut
23/// like `perform_visit` but takes &mut for in-place mutation
24///
25
26impl VisitorMut for SanitizeVisitor {
27    fn visit(&mut self, node: &mut dyn Visitable, event: Event) {
28        if matches!(event, Event::Enter) {
29            node.sanitize_self();
30            node.sanitize_children();
31            node.sanitize_custom();
32        }
33    }
34}