File tree Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Original file line number Diff line number Diff line change @@ -81,8 +81,9 @@ impl<T> From<Vec<Tree<T>>> for Tree<T> {
81
81
82
82
impl < T > Tree < T > {
83
83
fn flatten ( self ) -> Vec < T > {
84
- fn flatten_rec < T > ( dnode : Tree < T > , flat : & mut Vec < T > ) {
85
- match dnode {
84
+ #[ inline]
85
+ fn flatten_node < T > ( node : Tree < T > , flat : & mut Vec < T > ) {
86
+ match node {
86
87
Tree :: Empty => { }
87
88
Tree :: Leaf ( x) => {
88
89
flat. push ( x) ;
@@ -91,15 +92,19 @@ impl<T> Tree<T> {
91
92
flat. extend ( vec) ;
92
93
}
93
94
Tree :: Node ( children) => {
94
- for child in children {
95
- flatten_rec ( child, flat) ;
96
- }
95
+ flatten_vec ( children, flat) ;
97
96
}
98
97
}
99
98
}
100
99
100
+ fn flatten_vec < T > ( nodes : Vec < Tree < T > > , flat : & mut Vec < T > ) {
101
+ for node in nodes {
102
+ flatten_node ( node, flat) ;
103
+ }
104
+ }
105
+
101
106
let mut flat = Vec :: new ( ) ;
102
- flatten_rec ( self , & mut flat) ;
107
+ flatten_node ( self , & mut flat) ;
103
108
flat
104
109
}
105
110
}
You can’t perform that action at this time.
0 commit comments