diff --git a/src/syntax_tree.rs b/src/syntax_tree.rs index 410fb32567b67943c95c4b4aa7b2770bf9d2d8dc..5a7a0f85db7c3bc51ec42884fe9a5751735c973f 100644 --- a/src/syntax_tree.rs +++ b/src/syntax_tree.rs @@ -90,7 +90,8 @@ impl<T> SyntaxTree<T> { if predicate(self) { return Some(self) } else { - for child in &mut self.children{ + let mut children = self.children_mut(); + for child in children{ if(child.find_node_mut(predicate).is_some()){ return child.find_node_mut(predicate); } @@ -113,6 +114,10 @@ impl<T> SyntaxTree<T> { pub fn children(&self) -> &Vec<SyntaxTree<T>> { &self.children } + + pub fn children_mut(&mut self) -> &mut Vec<SyntaxTree<T>> { + &mut self.children + } } impl<T: Display> SyntaxTree<T> {