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) {
21
21
}
22
22
23
23
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) ) ;
25
37
}
26
38
27
39
#[ derive( clap:: Parser ) ]
You can’t perform that action at this time.
0 commit comments