@@ -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