Borrowed AST

This commit is contained in:
Aleksey Kladov
2018-08-17 22:00:13 +03:00
parent 70097504f7
commit d3c90ded2b
16 changed files with 350 additions and 343 deletions

View File

@@ -71,12 +71,16 @@ impl<R: TreeRoot> SyntaxNode<R> {
self.red().green().text()
}
pub fn children<'a>(&'a self) -> impl Iterator<Item = SyntaxNode<R>> + 'a {
let red = self.red();
let n_children = red.n_children();
(0..n_children).map(move |i| SyntaxNode {
root: self.root.clone(),
red: red.get_child(i).unwrap(),
pub fn children(&self) -> impl Iterator<Item = SyntaxNode<R>> {
let red = self.red;
let n_children = self.red().n_children();
let root = self.root.clone();
(0..n_children).map(move |i| {
let red = unsafe { red.get(&root) };
SyntaxNode {
root: root.clone(),
red: red.get_child(i).unwrap(),
}
})
}