Skip to content

Commit f94e193

Browse files
committed
add more docs
1 parent b23256f commit f94e193

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

datafusion/common/src/tree_node.rs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ pub trait TreeNode: Sized + Clone {
127127
/// f_up(ChildNode2)
128128
/// f_up(ParentNode)
129129
/// ```
130+
///
131+
/// See [`TreeNodeRecursion`] for more details on how the traversal can be controlled.
132+
///
130133
/// If `f_down` or `f_up` returns [`Err`], recursion is stopped immediately.
131134
fn transform<FD, FU>(self, f_down: &mut FD, f_up: &mut FU) -> Result<Self>
132135
where
@@ -199,11 +202,27 @@ pub trait TreeNode: Sized + Clone {
199202
/// Implements the [visitor pattern](https://en.wikipedia.org/wiki/Visitor_pattern) for
200203
/// recursively transforming [`TreeNode`]s.
201204
///
202-
/// When passed to [`TreeNode::rewrite()`], [`TreeNodeRewriter::f_down()`] and
203-
/// [`TreeNodeRewriter::f_up()`] are invoked recursively on an node tree.
205+
/// E.g. for an tree such as:
206+
/// ```text
207+
/// ParentNode
208+
/// left: ChildNode1
209+
/// right: ChildNode2
210+
/// ```
211+
///
212+
/// The nodes are visited using the following order:
213+
/// ```text
214+
/// TreeNodeRewriter::f_down(ParentNode)
215+
/// TreeNodeRewriter::f_down(ChildNode1)
216+
/// TreeNodeRewriter::f_up(ChildNode1)
217+
/// TreeNodeRewriter::f_down(ChildNode2)
218+
/// TreeNodeRewriter::f_up(ChildNode2)
219+
/// TreeNodeRewriter::f_up(ParentNode)
220+
/// ```
221+
///
204222
/// See [`TreeNodeRecursion`] for more details on how the traversal can be controlled.
205223
///
206-
/// If an [`Err`] result is returned, recursion is stopped immediately.
224+
/// If [`TreeNodeRewriter::f_down()`] or [`TreeNodeRewriter::f_up()`] returns [`Err`],
225+
/// recursion is stopped immediately.
207226
fn rewrite<R: TreeNodeRewriter<Node = Self>>(self, rewriter: &mut R) -> Result<Self> {
208227
let (new_node, tnr) = rewriter.f_down(self)?;
209228
match tnr {

0 commit comments

Comments
 (0)