@@ -111,7 +111,7 @@ impl SmallBitv {
111
111
112
112
#[ deriving( Clone ) ]
113
113
struct BigBitv {
114
- storage : ~ [ uint ]
114
+ storage : Vec < uint >
115
115
}
116
116
117
117
/**
@@ -131,7 +131,7 @@ fn big_mask(nbits: uint, elem: uint) -> uint {
131
131
}
132
132
133
133
impl BigBitv {
134
- pub fn new ( storage : ~ [ uint ] ) -> BigBitv {
134
+ pub fn new ( storage : Vec < uint > ) -> BigBitv {
135
135
BigBitv { storage : storage}
136
136
}
137
137
@@ -193,7 +193,7 @@ impl BigBitv {
193
193
pub fn get ( & self , i : uint ) -> bool {
194
194
let w = i / uint:: BITS ;
195
195
let b = i % uint:: BITS ;
196
- let x = 1 & self . storage [ w ] >> b;
196
+ let x = 1 & self . storage . get ( w ) >> b;
197
197
x == 1
198
198
}
199
199
@@ -202,15 +202,15 @@ impl BigBitv {
202
202
let w = i / uint:: BITS ;
203
203
let b = i % uint:: BITS ;
204
204
let flag = 1 << b;
205
- self . storage [ w ] = if x { self . storage [ w ] | flag }
206
- else { self . storage [ w ] & !flag } ;
205
+ * self . storage . get_mut ( w ) = if x { * self . storage . get ( w ) | flag }
206
+ else { * self . storage . get ( w ) & !flag } ;
207
207
}
208
208
209
209
#[ inline]
210
210
pub fn equals ( & self , b : & BigBitv , nbits : uint ) -> bool {
211
211
for ( i, elt) in b. storage . iter ( ) . enumerate ( ) {
212
212
let mask = big_mask ( nbits, i) ;
213
- if mask & self . storage [ i ] != mask & * elt {
213
+ if mask & * self . storage . get ( i ) != mask & * elt {
214
214
return false ;
215
215
}
216
216
}
@@ -278,13 +278,13 @@ impl Bitv {
278
278
let s =
279
279
if init {
280
280
if exact {
281
- slice :: from_elem ( nelems, !0 u)
281
+ Vec :: from_elem ( nelems, !0 u)
282
282
} else {
283
- let mut v = slice :: from_elem ( nelems-1 , !0 u) ;
283
+ let mut v = Vec :: from_elem ( nelems-1 , !0 u) ;
284
284
v. push ( ( 1 <<nbits % uint:: BITS ) -1 ) ;
285
285
v
286
286
}
287
- } else { slice :: from_elem ( nelems, 0 u) } ;
287
+ } else { Vec :: from_elem ( nelems, 0 u) } ;
288
288
Big ( BigBitv :: new ( s) )
289
289
} ;
290
290
Bitv { rep : rep, nbits : nbits}
@@ -451,8 +451,8 @@ impl Bitv {
451
451
*
452
452
* Each `uint` in the resulting vector has either value `0u` or `1u`.
453
453
*/
454
- pub fn to_vec ( & self ) -> ~ [ uint ] {
455
- slice :: from_fn ( self . nbits , |x| self . init_to_vec ( x) )
454
+ pub fn to_vec ( & self ) -> Vec < uint > {
455
+ Vec :: from_fn ( self . nbits , |x| self . init_to_vec ( x) )
456
456
}
457
457
458
458
/**
@@ -461,7 +461,7 @@ impl Bitv {
461
461
* size of the `Bitv` is not a multiple of 8 then trailing bits
462
462
* will be filled-in with false/0
463
463
*/
464
- pub fn to_bytes ( & self ) -> ~ [ u8 ] {
464
+ pub fn to_bytes ( & self ) -> Vec < u8 > {
465
465
fn bit ( bitv : & Bitv , byte : uint , bit : uint ) -> u8 {
466
466
let offset = byte * 8 + bit;
467
467
if offset >= bitv. nbits {
@@ -473,7 +473,7 @@ impl Bitv {
473
473
474
474
let len = self . nbits /8 +
475
475
if self . nbits % 8 == 0 { 0 } else { 1 } ;
476
- slice :: from_fn ( len, |i|
476
+ Vec :: from_fn ( len, |i|
477
477
bit ( self , i, 0 ) |
478
478
bit ( self , i, 1 ) |
479
479
bit ( self , i, 2 ) |
@@ -486,10 +486,10 @@ impl Bitv {
486
486
}
487
487
488
488
/**
489
- * Transform `self` into a `[ bool] ` by turning each bit into a `bool`.
489
+ * Transform `self` into a `Vec< bool> ` by turning each bit into a `bool`.
490
490
*/
491
- pub fn to_bools ( & self ) -> ~ [ bool ] {
492
- slice :: from_fn ( self . nbits , |i| self [ i] )
491
+ pub fn to_bools ( & self ) -> Vec < bool > {
492
+ Vec :: from_fn ( self . nbits , |i| self [ i] )
493
493
}
494
494
495
495
/**
@@ -659,7 +659,7 @@ pub struct BitvSet {
659
659
impl BitvSet {
660
660
/// Creates a new bit vector set with initially no contents
661
661
pub fn new ( ) -> BitvSet {
662
- BitvSet { size : 0 , bitv : BigBitv :: new ( ~ [ 0 ] ) }
662
+ BitvSet { size : 0 , bitv : BigBitv :: new ( vec ! ( 0 ) ) }
663
663
}
664
664
665
665
/// Creates a new bit vector set from the given bit vector
@@ -673,7 +673,7 @@ impl BitvSet {
673
673
match rep {
674
674
Big ( b) => BitvSet { size : size, bitv : b } ,
675
675
Small ( SmallBitv { bits} ) =>
676
- BitvSet { size : size, bitv : BigBitv { storage : ~ [ bits] } } ,
676
+ BitvSet { size : size, bitv : BigBitv { storage : vec ! ( bits) } } ,
677
677
}
678
678
}
679
679
@@ -705,9 +705,9 @@ impl BitvSet {
705
705
self . bitv . storage . grow ( other. capacity ( ) / uint:: BITS , & 0 ) ;
706
706
}
707
707
for ( i, & w) in other. bitv . storage . iter ( ) . enumerate ( ) {
708
- let old = self . bitv . storage [ i ] ;
708
+ let old = * self . bitv . storage . get ( i ) ;
709
709
let new = f ( old, w) ;
710
- self . bitv . storage [ i ] = new;
710
+ * self . bitv . storage . get_mut ( i ) = new;
711
711
self . size += nbits ( new) - nbits ( old) ;
712
712
}
713
713
}
@@ -863,7 +863,7 @@ impl MutableSet<uint> for BitvSet {
863
863
864
864
// Attempt to truncate our storage
865
865
let mut i = self . bitv . storage . len ( ) ;
866
- while i > 1 && self . bitv . storage [ i - 1 ] == 0 {
866
+ while i > 1 && * self . bitv . storage . get ( i - 1 ) == 0 {
867
867
i -= 1 ;
868
868
}
869
869
self . bitv . storage . truncate ( i) ;
@@ -878,12 +878,12 @@ impl BitvSet {
878
878
/// w1, w2) where the bit location is the number of bits offset so far,
879
879
/// and w1/w2 are the words coming from the two vectors self, other.
880
880
fn commons < ' a > ( & ' a self , other : & ' a BitvSet )
881
- -> Map < ' static , ( ( uint , & ' a uint ) , & ' a ~ [ uint ] ) , ( uint , uint , uint ) ,
882
- Zip < Enumerate < slice:: Items < ' a , uint > > , Repeat < & ' a ~ [ uint ] > > > {
881
+ -> Map < ' static , ( ( uint , & ' a uint ) , & ' a Vec < uint > ) , ( uint , uint , uint ) ,
882
+ Zip < Enumerate < slice:: Items < ' a , uint > > , Repeat < & ' a Vec < uint > > > > {
883
883
let min = cmp:: min ( self . bitv . storage . len ( ) , other. bitv . storage . len ( ) ) ;
884
884
self . bitv . storage . slice ( 0 , min) . iter ( ) . enumerate ( )
885
885
. zip ( Repeat :: new ( & other. bitv . storage ) )
886
- . map ( |( ( i, & w) , o_store) | ( i * uint:: BITS , w, o_store[ i ] ) )
886
+ . map ( |( ( i, & w) , o_store) | ( i * uint:: BITS , w, * o_store. get ( i ) ) )
887
887
}
888
888
889
889
/// Visits each word in `self` or `other` that extends beyond the other. This
@@ -946,7 +946,6 @@ mod tests {
946
946
use bitv;
947
947
948
948
use std:: uint;
949
- use std:: slice;
950
949
use rand;
951
950
use rand:: Rng ;
952
951
@@ -964,8 +963,8 @@ mod tests {
964
963
#[test]
965
964
fn test_0_elements() {
966
965
let act = Bitv::new(0u, false);
967
- let exp = slice ::from_elem::<bool> (0u, false);
968
- assert!(act.eq_vec(exp));
966
+ let exp = Vec ::from_elem(0u, false);
967
+ assert!(act.eq_vec(exp.as_slice() ));
969
968
}
970
969
971
970
#[test]
@@ -1299,12 +1298,12 @@ mod tests {
1299
1298
fn test_to_bytes() {
1300
1299
let mut bv = Bitv::new(3, true);
1301
1300
bv.set(1, false);
1302
- assert_eq!(bv.to_bytes(), ~[ 0b10100000] );
1301
+ assert_eq!(bv.to_bytes(), vec!( 0b10100000) );
1303
1302
1304
1303
let mut bv = Bitv::new(9, false);
1305
1304
bv.set(2, true);
1306
1305
bv.set(8, true);
1307
- assert_eq!(bv.to_bytes(), ~[ 0b00100000, 0b10000000] );
1306
+ assert_eq!(bv.to_bytes(), vec!( 0b00100000, 0b10000000) );
1308
1307
}
1309
1308
1310
1309
#[test]
@@ -1315,7 +1314,7 @@ mod tests {
1315
1314
1316
1315
#[test]
1317
1316
fn test_to_bools() {
1318
- let bools = ~[ false, false, true, false, false, true, true, false] ;
1317
+ let bools = vec!( false, false, true, false, false, true, true, false) ;
1319
1318
assert_eq!(from_bytes([0b00100110]).to_bools(), bools);
1320
1319
}
1321
1320
@@ -1334,8 +1333,8 @@ mod tests {
1334
1333
let bools = [true, false, true, true];
1335
1334
let bitv = BitvSet::from_bitv(from_bools(bools));
1336
1335
1337
- let idxs: ~[ uint] = bitv.iter().collect();
1338
- assert_eq!(idxs, ~[ 0, 2, 3] );
1336
+ let idxs: Vec< uint> = bitv.iter().collect();
1337
+ assert_eq!(idxs, vec!( 0, 2, 3) );
1339
1338
}
1340
1339
1341
1340
#[test]
@@ -1579,7 +1578,7 @@ mod tests {
1579
1578
#[ bench]
1580
1579
fn bench_big_bitv_small ( b : & mut BenchHarness ) {
1581
1580
let mut r = rng ( ) ;
1582
- let mut bitv = BigBitv :: new ( ~ [ 0 ] ) ;
1581
+ let mut bitv = BigBitv :: new ( vec ! ( 0 ) ) ;
1583
1582
b. iter ( || {
1584
1583
bitv. set ( ( r. next_u32 ( ) as uint ) % uint:: BITS , true ) ;
1585
1584
& bitv
@@ -1589,7 +1588,7 @@ mod tests {
1589
1588
#[ bench]
1590
1589
fn bench_big_bitv_big ( b : & mut BenchHarness ) {
1591
1590
let mut r = rng ( ) ;
1592
- let mut storage = ~ [ ] ;
1591
+ let mut storage = vec ! ( ) ;
1593
1592
storage. grow ( BENCH_BITS / uint:: BITS , & 0 u) ;
1594
1593
let mut bitv = BigBitv :: new ( storage) ;
1595
1594
b. iter ( || {
0 commit comments