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}