1
- use std:: { slice, vec} ;
2
1
use std:: ops:: Range ;
2
+ use std:: { slice, vec} ;
3
3
4
- use { Tree , NodeId , Node , NodeRef } ;
4
+ use { Node , NodeId , NodeRef , Tree } ;
5
5
6
6
/// Iterator that moves out of a tree in insert order.
7
7
#[ derive( Debug ) ]
8
8
pub struct IntoIter < T > ( vec:: IntoIter < Node < T > > ) ;
9
- impl < T > ExactSizeIterator for IntoIter < T > { }
9
+ impl < T > ExactSizeIterator for IntoIter < T > { }
10
10
impl < T > Iterator for IntoIter < T > {
11
11
type Item = T ;
12
12
fn next ( & mut self ) -> Option < Self :: Item > {
@@ -30,7 +30,7 @@ impl<'a, T: 'a> Clone for Values<'a, T> {
30
30
Values ( self . 0 . clone ( ) )
31
31
}
32
32
}
33
- impl < ' a , T : ' a > ExactSizeIterator for Values < ' a , T > { }
33
+ impl < ' a , T : ' a > ExactSizeIterator for Values < ' a , T > { }
34
34
impl < ' a , T : ' a > Iterator for Values < ' a , T > {
35
35
type Item = & ' a T ;
36
36
fn next ( & mut self ) -> Option < Self :: Item > {
@@ -49,7 +49,7 @@ impl<'a, T: 'a> DoubleEndedIterator for Values<'a, T> {
49
49
/// Mutable iterator over values in insert order.
50
50
#[ derive( Debug ) ]
51
51
pub struct ValuesMut < ' a , T : ' a > ( slice:: IterMut < ' a , Node < T > > ) ;
52
- impl < ' a , T : ' a > ExactSizeIterator for ValuesMut < ' a , T > { }
52
+ impl < ' a , T : ' a > ExactSizeIterator for ValuesMut < ' a , T > { }
53
53
impl < ' a , T : ' a > Iterator for ValuesMut < ' a , T > {
54
54
type Item = & ' a mut T ;
55
55
fn next ( & mut self ) -> Option < Self :: Item > {
@@ -73,22 +73,29 @@ pub struct Nodes<'a, T: 'a> {
73
73
}
74
74
impl < ' a , T : ' a > Clone for Nodes < ' a , T > {
75
75
fn clone ( & self ) -> Self {
76
- Self { tree : self . tree , iter : self . iter . clone ( ) }
76
+ Self {
77
+ tree : self . tree ,
78
+ iter : self . iter . clone ( ) ,
79
+ }
77
80
}
78
81
}
79
- impl < ' a , T : ' a > ExactSizeIterator for Nodes < ' a , T > { }
82
+ impl < ' a , T : ' a > ExactSizeIterator for Nodes < ' a , T > { }
80
83
impl < ' a , T : ' a > Iterator for Nodes < ' a , T > {
81
84
type Item = NodeRef < ' a , T > ;
82
85
fn next ( & mut self ) -> Option < Self :: Item > {
83
- self . iter . next ( ) . map ( |i| unsafe { self . tree . get_unchecked ( NodeId :: from_index ( i) ) } )
86
+ self . iter
87
+ . next ( )
88
+ . map ( |i| unsafe { self . tree . get_unchecked ( NodeId :: from_index ( i) ) } )
84
89
}
85
90
fn size_hint ( & self ) -> ( usize , Option < usize > ) {
86
91
self . iter . size_hint ( )
87
92
}
88
93
}
89
94
impl < ' a , T : ' a > DoubleEndedIterator for Nodes < ' a , T > {
90
95
fn next_back ( & mut self ) -> Option < Self :: Item > {
91
- self . iter . next_back ( ) . map ( |i| unsafe { self . tree . get_unchecked ( NodeId :: from_index ( i) ) } )
96
+ self . iter
97
+ . next_back ( )
98
+ . map ( |i| unsafe { self . tree . get_unchecked ( NodeId :: from_index ( i) ) } )
92
99
}
93
100
}
94
101
@@ -113,7 +120,10 @@ impl<T> Tree<T> {
113
120
114
121
/// Returns an iterator over nodes in insert order.
115
122
pub fn nodes ( & self ) -> Nodes < T > {
116
- Nodes { tree : self , iter : 0 ..self . vec . len ( ) }
123
+ Nodes {
124
+ tree : self ,
125
+ iter : 0 ..self . vec . len ( ) ,
126
+ }
117
127
}
118
128
}
119
129
@@ -165,7 +175,10 @@ pub struct Children<'a, T: 'a> {
165
175
}
166
176
impl < ' a , T : ' a > Clone for Children < ' a , T > {
167
177
fn clone ( & self ) -> Self {
168
- Self { front : self . front . clone ( ) , back : self . back . clone ( ) }
178
+ Self {
179
+ front : self . front ,
180
+ back : self . back ,
181
+ }
169
182
}
170
183
}
171
184
impl < ' a , T : ' a > Iterator for Children < ' a , T > {
@@ -204,17 +217,17 @@ pub enum Edge<'a, T: 'a> {
204
217
/// Close.
205
218
Close ( NodeRef < ' a , T > ) ,
206
219
}
207
- impl < ' a , T : ' a > Copy for Edge < ' a , T > { }
220
+ impl < ' a , T : ' a > Copy for Edge < ' a , T > { }
208
221
impl < ' a , T : ' a > Clone for Edge < ' a , T > {
209
- fn clone ( & self ) -> Self { * self }
222
+ fn clone ( & self ) -> Self {
223
+ * self
224
+ }
210
225
}
211
- impl < ' a , T : ' a > Eq for Edge < ' a , T > { }
226
+ impl < ' a , T : ' a > Eq for Edge < ' a , T > { }
212
227
impl < ' a , T : ' a > PartialEq for Edge < ' a , T > {
213
228
fn eq ( & self , other : & Self ) -> bool {
214
229
match ( * self , * other) {
215
- ( Edge :: Open ( a) , Edge :: Open ( b) ) | ( Edge :: Close ( a) , Edge :: Close ( b) ) => {
216
- a == b
217
- } ,
230
+ ( Edge :: Open ( a) , Edge :: Open ( b) ) | ( Edge :: Close ( a) , Edge :: Close ( b) ) => a == b,
218
231
_ => false ,
219
232
}
220
233
}
@@ -228,7 +241,10 @@ pub struct Traverse<'a, T: 'a> {
228
241
}
229
242
impl < ' a , T : ' a > Clone for Traverse < ' a , T > {
230
243
fn clone ( & self ) -> Self {
231
- Self { root : self . root , edge : self . edge }
244
+ Self {
245
+ root : self . root ,
246
+ edge : self . edge ,
247
+ }
232
248
}
233
249
}
234
250
impl < ' a , T : ' a > Iterator for Traverse < ' a , T > {
@@ -237,23 +253,23 @@ impl<'a, T: 'a> Iterator for Traverse<'a, T> {
237
253
match self . edge {
238
254
None => {
239
255
self . edge = Some ( Edge :: Open ( self . root ) ) ;
240
- } ,
256
+ }
241
257
Some ( Edge :: Open ( node) ) => {
242
258
if let Some ( first_child) = node. first_child ( ) {
243
259
self . edge = Some ( Edge :: Open ( first_child) ) ;
244
260
} else {
245
261
self . edge = Some ( Edge :: Close ( node) ) ;
246
262
}
247
- } ,
263
+ }
248
264
Some ( Edge :: Close ( node) ) => {
249
265
if node == self . root {
250
- self . edge = None ;
266
+ self . edge = None ;
251
267
} else if let Some ( next_sibling) = node. next_sibling ( ) {
252
268
self . edge = Some ( Edge :: Open ( next_sibling) ) ;
253
269
} else {
254
270
self . edge = node. parent ( ) . map ( Edge :: Close ) ;
255
271
}
256
- } ,
272
+ }
257
273
}
258
274
self . edge
259
275
}
0 commit comments