1
1
//! Traversal of the graph of IR items and types.
2
2
3
- use std:: collections:: { BTreeMap , VecDeque } ;
4
3
use super :: context:: { BindgenContext , ItemId } ;
5
4
use super :: item:: ItemSet ;
5
+ use std:: collections:: { BTreeMap , VecDeque } ;
6
6
7
7
/// An outgoing edge in the IR graph is a reference from some item to another
8
8
/// item:
@@ -14,7 +14,7 @@ use super::item::ItemSet;
14
14
#[ derive( Debug , Copy , Clone , PartialEq , Eq , PartialOrd , Ord , Hash ) ]
15
15
pub struct Edge {
16
16
to : ItemId ,
17
- kind : EdgeKind
17
+ kind : EdgeKind ,
18
18
}
19
19
20
20
impl Edge {
@@ -119,18 +119,20 @@ impl<'ctx, 'gen> TraversalStorage<'ctx, 'gen> for ItemSet {
119
119
/// each item. This is useful for providing debug assertions with meaningful
120
120
/// diagnostic messages about dangling items.
121
121
#[ derive( Debug ) ]
122
- pub struct Paths < ' ctx , ' gen > ( BTreeMap < ItemId , ItemId > , & ' ctx BindgenContext < ' gen > )
122
+ pub struct Paths < ' ctx , ' gen > ( BTreeMap < ItemId , ItemId > ,
123
+ & ' ctx BindgenContext < ' gen > )
123
124
where ' gen : ' ctx ;
124
125
125
126
impl < ' ctx , ' gen > TraversalStorage < ' ctx , ' gen > for Paths < ' ctx , ' gen >
126
- where ' gen : ' ctx
127
+ where ' gen : ' ctx ,
127
128
{
128
129
fn new ( ctx : & ' ctx BindgenContext < ' gen > ) -> Self {
129
130
Paths ( BTreeMap :: new ( ) , ctx)
130
131
}
131
132
132
133
fn add ( & mut self , from : Option < ItemId > , item : ItemId ) -> bool {
133
- let newly_discovered = self . 0 . insert ( item, from. unwrap_or ( item) ) . is_none ( ) ;
134
+ let newly_discovered =
135
+ self . 0 . insert ( item, from. unwrap_or ( item) ) . is_none ( ) ;
134
136
135
137
if self . 1 . resolve_item_fallible ( item) . is_none ( ) {
136
138
let mut path = vec ! [ ] ;
@@ -241,7 +243,11 @@ pub struct ItemTraversal<'ctx, 'gen, Storage, Queue, Predicate>
241
243
currently_traversing : Option < ItemId > ,
242
244
}
243
245
244
- impl < ' ctx , ' gen , Storage , Queue , Predicate > ItemTraversal < ' ctx , ' gen , Storage , Queue , Predicate >
246
+ impl < ' ctx , ' gen , Storage , Queue , Predicate > ItemTraversal < ' ctx ,
247
+ ' gen ,
248
+ Storage ,
249
+ Queue ,
250
+ Predicate >
245
251
where ' gen : ' ctx ,
246
252
Storage : TraversalStorage < ' ctx , ' gen > ,
247
253
Queue : TraversalQueue ,
@@ -272,7 +278,8 @@ impl<'ctx, 'gen, Storage, Queue, Predicate> ItemTraversal<'ctx, 'gen, Storage, Q
272
278
}
273
279
}
274
280
275
- impl < ' ctx , ' gen , Storage , Queue , Predicate > Tracer for ItemTraversal < ' ctx , ' gen , Storage , Queue , Predicate >
281
+ impl < ' ctx , ' gen , Storage , Queue , Predicate > Tracer
282
+ for ItemTraversal < ' ctx , ' gen , Storage , Queue , Predicate >
276
283
where ' gen : ' ctx ,
277
284
Storage : TraversalStorage < ' ctx , ' gen > ,
278
285
Queue : TraversalQueue ,
@@ -283,15 +290,17 @@ impl<'ctx, 'gen, Storage, Queue, Predicate> Tracer for ItemTraversal<'ctx, 'gen,
283
290
if !self . predicate . should_follow ( edge) {
284
291
return ;
285
292
}
286
-
287
- let is_newly_discovered = self . seen . add ( self . currently_traversing , item) ;
293
+
294
+ let is_newly_discovered = self . seen
295
+ . add ( self . currently_traversing , item) ;
288
296
if is_newly_discovered {
289
297
self . queue . push ( item)
290
298
}
291
299
}
292
300
}
293
301
294
- impl < ' ctx , ' gen , Storage , Queue , Predicate > Iterator for ItemTraversal < ' ctx , ' gen , Storage , Queue , Predicate >
302
+ impl < ' ctx , ' gen , Storage , Queue , Predicate > Iterator
303
+ for ItemTraversal < ' ctx , ' gen , Storage , Queue , Predicate >
295
304
where ' gen : ' ctx ,
296
305
Storage : TraversalStorage < ' ctx , ' gen > ,
297
306
Queue : TraversalQueue ,
@@ -324,7 +333,11 @@ impl<'ctx, 'gen, Storage, Queue, Predicate> Iterator for ItemTraversal<'ctx, 'ge
324
333
/// See `BindgenContext::assert_no_dangling_item_traversal` for more
325
334
/// information.
326
335
pub type AssertNoDanglingItemsTraversal < ' ctx , ' gen > =
327
- ItemTraversal < ' ctx , ' gen , Paths < ' ctx , ' gen > , VecDeque < ItemId > , fn ( Edge ) -> bool > ;
336
+ ItemTraversal < ' ctx ,
337
+ ' gen ,
338
+ Paths < ' ctx , ' gen > ,
339
+ VecDeque < ItemId > ,
340
+ fn ( Edge ) -> bool > ;
328
341
329
342
#[ cfg( test) ]
330
343
mod tests {
0 commit comments