@@ -23,46 +23,6 @@ pub struct BitArray<C: Idx> {
23
23
marker : PhantomData < C > ,
24
24
}
25
25
26
- #[ derive( Clone , Debug , PartialEq ) ]
27
- pub struct BitVector < C : Idx > {
28
- data : BitArray < C > ,
29
- }
30
-
31
- impl < C : Idx > BitVector < C > {
32
- pub fn grow ( & mut self , num_bits : C ) {
33
- self . data . grow ( num_bits)
34
- }
35
-
36
- pub fn new ( ) -> BitVector < C > {
37
- BitVector {
38
- data : BitArray :: new ( 0 ) ,
39
- }
40
- }
41
-
42
- pub fn with_capacity ( bits : usize ) -> BitVector < C > {
43
- BitVector {
44
- data : BitArray :: new ( bits) ,
45
- }
46
- }
47
-
48
- /// Returns true if the bit has changed.
49
- #[ inline]
50
- pub fn insert ( & mut self , bit : C ) -> bool {
51
- self . grow ( bit) ;
52
- self . data . insert ( bit)
53
- }
54
-
55
- #[ inline]
56
- pub fn contains ( & self , bit : C ) -> bool {
57
- let ( word, mask) = word_mask ( bit) ;
58
- if let Some ( word) = self . data . data . get ( word) {
59
- ( word & mask) != 0
60
- } else {
61
- false
62
- }
63
- }
64
- }
65
-
66
26
impl < C : Idx > BitArray < C > {
67
27
// Do not make this method public, instead switch your use case to BitVector.
68
28
#[ inline]
@@ -206,6 +166,43 @@ impl<'a, C: Idx> Iterator for BitIter<'a, C> {
206
166
}
207
167
}
208
168
169
+ /// A resizable BitVector type.
170
+ #[ derive( Clone , Debug , PartialEq ) ]
171
+ pub struct BitVector < C : Idx > {
172
+ data : BitArray < C > ,
173
+ }
174
+
175
+ impl < C : Idx > BitVector < C > {
176
+ pub fn grow ( & mut self , num_bits : C ) {
177
+ self . data . grow ( num_bits)
178
+ }
179
+
180
+ pub fn new ( ) -> BitVector < C > {
181
+ BitVector { data : BitArray :: new ( 0 ) }
182
+ }
183
+
184
+ pub fn with_capacity ( bits : usize ) -> BitVector < C > {
185
+ BitVector { data : BitArray :: new ( bits) }
186
+ }
187
+
188
+ /// Returns true if the bit has changed.
189
+ #[ inline]
190
+ pub fn insert ( & mut self , bit : C ) -> bool {
191
+ self . grow ( bit) ;
192
+ self . data . insert ( bit)
193
+ }
194
+
195
+ #[ inline]
196
+ pub fn contains ( & self , bit : C ) -> bool {
197
+ let ( word, mask) = word_mask ( bit) ;
198
+ if let Some ( word) = self . data . data . get ( word) {
199
+ ( word & mask) != 0
200
+ } else {
201
+ false
202
+ }
203
+ }
204
+ }
205
+
209
206
/// A "bit matrix" is basically a matrix of booleans represented as
210
207
/// one gigantic bitvector. In other words, it is as if you have
211
208
/// `rows` bitvectors, each of length `columns`.
0 commit comments