1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
//! Defines different visitor patterns and for any tree.
use arrow::legacy::error::PolarsResult;
mod expr;
#[cfg(feature = "cse")]
mod hash;
mod lp;
mod visitors;
pub use expr::*;
pub use lp::*;
pub use visitors::*;
/// Controls how the [`TreeWalker`] recursion should proceed for [`TreeWalker::visit`].
#[derive(Debug)]
pub enum VisitRecursion {
/// Continue the visit to this node tree.
Continue,
/// Keep recursive but skip applying op on the children
Skip,
/// Stop the visit to this node tree.
Stop,
}
/// Controls how the [`TreeWalker`] recursion should proceed for [`TreeWalker::rewrite`].
#[derive(Debug)]
pub enum RewriteRecursion {
/// Continue the visit to this node and children.
MutateAndContinue,
/// Don't mutate this node, continue visiting the children
NoMutateAndContinue,
/// Stop and return.
/// This doesn't visit the children
Stop,
/// Call `op` immediately and return
/// This doesn't visit the children
MutateAndStop,
}