Skip to content

Commit 437c4bc

Browse files
committed
update example
1 parent 29074eb commit 437c4bc

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

examples/tree_traversals.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,19 @@ fn traverse_upwards_with_iterator(tree: &tskit::Tree) {
2121
}
2222

2323
fn preorder_traversal(tree: &tskit::Tree) {
24-
for _ in tree.traverse_nodes(tskit::NodeTraversalOrder::Preorder) {}
24+
// Iterate over nodes.
25+
// For preorder traversal, this avoids allocation.
26+
// (But we collect the data for this example, which does allocate.)
27+
let nodes_from_iter = tree
28+
.traverse_nodes(tskit::NodeTraversalOrder::Preorder)
29+
.collect::<Vec<_>>();
30+
// Get a COPY of all nodes as a boxed slice
31+
let nodes_as_slice = tree.nodes(tskit::NodeTraversalOrder::Preorder).unwrap();
32+
assert_eq!(nodes_as_slice.len(), nodes_from_iter.len());
33+
nodes_from_iter
34+
.iter()
35+
.zip(nodes_as_slice.iter())
36+
.for_each(|(i, j)| assert_eq!(i, j));
2537
}
2638

2739
#[derive(clap::Parser)]

0 commit comments

Comments
 (0)