@@ -95,20 +95,6 @@ fn match_words <'a,'b>(a: &'a Bitv, b: &'b Bitv) -> (MatchWords<'a>, MatchWords<
95
95
static TRUE : bool = true ;
96
96
static FALSE : bool = false ;
97
97
98
- #[ deriving( Clone ) ]
99
- struct SmallBitv {
100
- /// only the lowest nbits of this value are used. the rest is undefined.
101
- bits : uint
102
- }
103
-
104
- #[ deriving( Clone ) ]
105
- struct BigBitv {
106
- storage : Vec < uint >
107
- }
108
-
109
- #[ deriving( Clone ) ]
110
- enum BitvVariant { Big ( BigBitv ) , Small ( SmallBitv ) }
111
-
112
98
/// The bitvector type.
113
99
///
114
100
/// # Example
@@ -1653,6 +1639,7 @@ impl<'a> Iterator<uint> for TwoBitPositions<'a> {
1653
1639
#[ cfg( test) ]
1654
1640
mod tests {
1655
1641
use std:: prelude:: * ;
1642
+ use std:: iter:: range_step;
1656
1643
use std:: uint;
1657
1644
use std:: rand;
1658
1645
use std:: rand:: Rng ;
@@ -2046,12 +2033,14 @@ mod tests {
2046
2033
2047
2034
#[ test]
2048
2035
fn test_bitv_iterator ( ) {
2049
- let bools = [ true , false , true , true ] ;
2036
+ let bools = vec ! [ true , false , true , true ] ;
2050
2037
let bitv: Bitv = bools. iter ( ) . map ( |n| * n) . collect ( ) ;
2051
2038
2052
- for ( act, & ex) in bitv. iter ( ) . zip ( bools. iter ( ) ) {
2053
- assert_eq ! ( ex, act) ;
2054
- }
2039
+ assert_eq ! ( bitv. iter( ) . collect:: <Vec <bool >>( ) , bools)
2040
+
2041
+ let long = Vec :: from_fn ( 10000 , |i| i % 2 == 0 ) ;
2042
+ let bitv: Bitv = long. iter ( ) . map ( |n| * n) . collect ( ) ;
2043
+ assert_eq ! ( bitv. iter( ) . collect:: <Vec <bool >>( ) , long)
2055
2044
}
2056
2045
2057
2046
#[ test]
@@ -2061,6 +2050,12 @@ mod tests {
2061
2050
2062
2051
let idxs: Vec < uint > = bitv. iter ( ) . collect ( ) ;
2063
2052
assert_eq ! ( idxs, vec!( 0 , 2 , 3 ) ) ;
2053
+
2054
+ let long: BitvSet = range ( 0 u, 10000 ) . map ( |n| n % 2 == 0 ) . collect ( ) ;
2055
+ let real = range_step ( 0 , 10000 , 2 ) . collect :: < Vec < uint > > ( ) ;
2056
+
2057
+ let idxs: Vec < uint > = long. iter ( ) . collect ( ) ;
2058
+ assert_eq ! ( idxs, real) ;
2064
2059
}
2065
2060
2066
2061
#[ test]
@@ -2574,7 +2569,7 @@ mod tests {
2574
2569
}
2575
2570
2576
2571
#[ bench]
2577
- fn bench_bitv_big ( b : & mut Bencher ) {
2572
+ fn bench_bitv_set_big_fixed ( b : & mut Bencher ) {
2578
2573
let mut r = rng ( ) ;
2579
2574
let mut bitv = Bitv :: with_capacity ( BENCH_BITS , false ) ;
2580
2575
b. iter ( || {
@@ -2586,7 +2581,19 @@ mod tests {
2586
2581
}
2587
2582
2588
2583
#[ bench]
2589
- fn bench_bitv_small ( b : & mut Bencher ) {
2584
+ fn bench_bitv_set_big_variable ( b : & mut Bencher ) {
2585
+ let mut r = rng ( ) ;
2586
+ let mut bitv = Bitv :: with_capacity ( BENCH_BITS , false ) ;
2587
+ b. iter ( || {
2588
+ for i in range ( 0 u, 100 ) {
2589
+ bitv. set ( ( r. next_u32 ( ) as uint ) % BENCH_BITS , r. gen ( ) ) ;
2590
+ }
2591
+ & bitv
2592
+ } )
2593
+ }
2594
+
2595
+ #[ bench]
2596
+ fn bench_bitv_set_small ( b : & mut Bencher ) {
2590
2597
let mut r = rng ( ) ;
2591
2598
let mut bitv = Bitv :: with_capacity ( uint:: BITS , false ) ;
2592
2599
b. iter ( || {
@@ -2598,7 +2605,7 @@ mod tests {
2598
2605
}
2599
2606
2600
2607
#[ bench]
2601
- fn bench_bitv_set_small ( b : & mut Bencher ) {
2608
+ fn bench_bitvset_small ( b : & mut Bencher ) {
2602
2609
let mut r = rng ( ) ;
2603
2610
let mut bitv = BitvSet :: new ( ) ;
2604
2611
b. iter ( || {
@@ -2610,7 +2617,7 @@ mod tests {
2610
2617
}
2611
2618
2612
2619
#[ bench]
2613
- fn bench_bitv_set_big ( b : & mut Bencher ) {
2620
+ fn bench_bitvset_big ( b : & mut Bencher ) {
2614
2621
let mut r = rng ( ) ;
2615
2622
let mut bitv = BitvSet :: new ( ) ;
2616
2623
b. iter ( || {
0 commit comments