icydb_core/visitor/
validate.rs

1use crate::{
2    traits::Visitable,
3    visitor::{Visitor, VisitorContext},
4};
5
6///
7/// ValidateVisitor
8/// Walks a tree and applies validation at each node.
9///
10#[derive(Debug, Default)]
11pub struct ValidateVisitor;
12
13impl ValidateVisitor {
14    #[must_use]
15    pub const fn new() -> Self {
16        Self
17    }
18}
19
20impl Visitor for ValidateVisitor {
21    fn enter(&mut self, node: &dyn Visitable, ctx: &mut dyn VisitorContext) {
22        node.validate_self(ctx);
23        node.validate_custom(ctx);
24    }
25
26    fn exit(&mut self, _: &dyn Visitable, _: &mut dyn VisitorContext) {}
27}