@@ -27,7 +27,9 @@ impl BitVector {
27
27
#[ inline]
28
28
pub fn new ( num_bits : usize ) -> BitVector {
29
29
let num_words = words ( num_bits) ;
30
- BitVector { data : vec ! [ 0 ; num_words] }
30
+ BitVector {
31
+ data : vec ! [ 0 ; num_words] ,
32
+ }
31
33
}
32
34
33
35
#[ inline]
@@ -133,7 +135,10 @@ impl<'a> Iterator for BitVectorIter<'a> {
133
135
}
134
136
135
137
impl FromIterator < bool > for BitVector {
136
- fn from_iter < I > ( iter : I ) -> BitVector where I : IntoIterator < Item =bool > {
138
+ fn from_iter < I > ( iter : I ) -> BitVector
139
+ where
140
+ I : IntoIterator < Item = bool > ,
141
+ {
137
142
let iter = iter. into_iter ( ) ;
138
143
let ( len, _) = iter. size_hint ( ) ;
139
144
// Make the minimum length for the bitvector WORD_BITS bits since that's
@@ -262,7 +267,11 @@ impl BitMatrix {
262
267
}
263
268
264
269
#[ derive( Clone , Debug ) ]
265
- pub struct SparseBitMatrix < R , C > where R : Idx , C : Idx {
270
+ pub struct SparseBitMatrix < R , C >
271
+ where
272
+ R : Idx ,
273
+ C : Idx ,
274
+ {
266
275
vector : IndexVec < R , SparseBitSet < C > > ,
267
276
}
268
277
@@ -340,7 +349,7 @@ impl<I: Idx> SparseChunk<I> {
340
349
SparseChunk {
341
350
key,
342
351
bits : 1 << ( index % 128 ) ,
343
- _marker : PhantomData
352
+ _marker : PhantomData ,
344
353
}
345
354
}
346
355
@@ -351,26 +360,28 @@ impl<I: Idx> SparseChunk<I> {
351
360
pub fn iter ( & self ) -> impl Iterator < Item = I > {
352
361
let base = self . key as usize * 128 ;
353
362
let mut bits = self . bits ;
354
- ( 0 ..128 ) . map ( move |i| {
355
- let current_bits = bits;
356
- bits >>= 1 ;
357
- ( i, current_bits)
358
- } ) . take_while ( |& ( _, bits) | bits != 0 )
359
- . filter_map ( move |( i, bits) | {
360
- if ( bits & 1 ) != 0 {
361
- Some ( I :: new ( base + i) )
362
- } else {
363
- None
364
- }
365
- } )
363
+ ( 0 ..128 )
364
+ . map ( move |i| {
365
+ let current_bits = bits;
366
+ bits >>= 1 ;
367
+ ( i, current_bits)
368
+ } )
369
+ . take_while ( |& ( _, bits) | bits != 0 )
370
+ . filter_map ( move |( i, bits) | {
371
+ if ( bits & 1 ) != 0 {
372
+ Some ( I :: new ( base + i) )
373
+ } else {
374
+ None
375
+ }
376
+ } )
366
377
}
367
378
}
368
379
369
380
impl < I : Idx > SparseBitSet < I > {
370
381
pub fn new ( ) -> Self {
371
382
SparseBitSet {
372
383
chunk_bits : BTreeMap :: new ( ) ,
373
- _marker : PhantomData
384
+ _marker : PhantomData ,
374
385
}
375
386
}
376
387
@@ -380,7 +391,9 @@ impl<I: Idx> SparseBitSet<I> {
380
391
381
392
pub fn contains_chunk ( & self , chunk : SparseChunk < I > ) -> SparseChunk < I > {
382
393
SparseChunk {
383
- bits : self . chunk_bits . get ( & chunk. key ) . map_or ( 0 , |bits| bits & chunk. bits ) ,
394
+ bits : self . chunk_bits
395
+ . get ( & chunk. key )
396
+ . map_or ( 0 , |bits| bits & chunk. bits ) ,
384
397
..chunk
385
398
}
386
399
}
@@ -415,7 +428,7 @@ impl<I: Idx> SparseBitSet<I> {
415
428
}
416
429
new_bits ^ old_bits
417
430
}
418
- Entry :: Vacant ( _) => 0
431
+ Entry :: Vacant ( _) => 0 ,
419
432
} ;
420
433
SparseChunk {
421
434
bits : changed,
@@ -428,12 +441,10 @@ impl<I: Idx> SparseBitSet<I> {
428
441
}
429
442
430
443
pub fn chunks < ' a > ( & ' a self ) -> impl Iterator < Item = SparseChunk < I > > + ' a {
431
- self . chunk_bits . iter ( ) . map ( |( & key, & bits) | {
432
- SparseChunk {
433
- key,
434
- bits,
435
- _marker : PhantomData
436
- }
444
+ self . chunk_bits . iter ( ) . map ( |( & key, & bits) | SparseChunk {
445
+ key,
446
+ bits,
447
+ _marker : PhantomData ,
437
448
} )
438
449
}
439
450
@@ -478,11 +489,12 @@ fn bitvec_iter_works() {
478
489
bitvec. insert ( 65 ) ;
479
490
bitvec. insert ( 66 ) ;
480
491
bitvec. insert ( 99 ) ;
481
- assert_eq ! ( bitvec. iter( ) . collect:: <Vec <_>>( ) ,
482
- [ 1 , 10 , 19 , 62 , 63 , 64 , 65 , 66 , 99 ] ) ;
492
+ assert_eq ! (
493
+ bitvec. iter( ) . collect:: <Vec <_>>( ) ,
494
+ [ 1 , 10 , 19 , 62 , 63 , 64 , 65 , 66 , 99 ]
495
+ ) ;
483
496
}
484
497
485
-
486
498
#[ test]
487
499
fn bitvec_iter_works_2 ( ) {
488
500
let mut bitvec = BitVector :: new ( 319 ) ;
@@ -514,24 +526,24 @@ fn union_two_vecs() {
514
526
#[ test]
515
527
fn grow ( ) {
516
528
let mut vec1 = BitVector :: new ( 65 ) ;
517
- for index in 0 .. 65 {
529
+ for index in 0 .. 65 {
518
530
assert ! ( vec1. insert( index) ) ;
519
531
assert ! ( !vec1. insert( index) ) ;
520
532
}
521
533
vec1. grow ( 128 ) ;
522
534
523
535
// Check if the bits set before growing are still set
524
- for index in 0 .. 65 {
536
+ for index in 0 .. 65 {
525
537
assert ! ( vec1. contains( index) ) ;
526
538
}
527
539
528
540
// Check if the new bits are all un-set
529
- for index in 65 .. 128 {
541
+ for index in 65 .. 128 {
530
542
assert ! ( !vec1. contains( index) ) ;
531
543
}
532
544
533
545
// Check that we can set all new bits without running out of bounds
534
- for index in 65 .. 128 {
546
+ for index in 65 .. 128 {
535
547
assert ! ( vec1. insert( index) ) ;
536
548
assert ! ( !vec1. insert( index) ) ;
537
549
}
0 commit comments