File tree Expand file tree Collapse file tree 1 file changed +13
-1
lines changed Expand file tree Collapse file tree 1 file changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -21,7 +21,19 @@ fn traverse_upwards_with_iterator(tree: &tskit::Tree) {
2121}
2222
2323fn 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 ) ]
You can’t perform that action at this time.
0 commit comments