@@ -6,21 +6,20 @@ use std::intrinsics;
6
6
use std:: io;
7
7
use std:: path:: Path ;
8
8
9
- use bincode:: { serialize , deserialize , Infinite } ;
10
- use mmap_bitvec:: { BitVector , MmapBitVec , BitVecSlice } ;
9
+ use bincode:: { deserialize , serialize , Infinite } ;
10
+ use mmap_bitvec:: { BitVecSlice , BitVector , MmapBitVec } ;
11
11
use murmurhash3:: murmurhash3_x64_128;
12
- use serde:: Serialize ;
13
12
use serde:: de:: DeserializeOwned ;
13
+ use serde:: Serialize ;
14
14
#[ cfg( feature = "legacy" ) ]
15
15
use serde_json;
16
16
17
17
use crate :: marker:: { from_marker, to_marker} ;
18
18
19
-
20
19
#[ derive( Debug , Deserialize , Serialize ) ]
21
20
pub ( crate ) struct BFieldParams < T > {
22
- n_hashes : u8 , // k
23
- marker_width : u8 , // nu
21
+ n_hashes : u8 , // k
22
+ marker_width : u8 , // nu
24
23
n_marker_bits : u8 , // kappa
25
24
pub ( crate ) other : Option < T > ,
26
25
}
@@ -148,10 +147,8 @@ impl<T: Clone + DeserializeOwned + Serialize> BFieldMember<T> {
148
147
149
148
for marker_ix in 0usize ..self . params . n_hashes as usize {
150
149
let pos = marker_pos ( hash, marker_ix, self . bitvec . size ( ) , marker_width) ;
151
- self . bitvec . set_range (
152
- pos..pos + marker_width,
153
- aligned_marker,
154
- ) ;
150
+ self . bitvec
151
+ . set_range ( pos..pos + marker_width, aligned_marker) ;
155
152
}
156
153
}
157
154
@@ -168,7 +165,7 @@ impl<T: Clone + DeserializeOwned + Serialize> BFieldMember<T> {
168
165
let existing_marker = self . get_raw ( key, k) ;
169
166
170
167
match existing_marker. count_ones ( ) . cmp ( & k) {
171
- Ordering :: Greater => false , // already indeterminate
168
+ Ordering :: Greater => false , // already indeterminate
172
169
Ordering :: Equal => {
173
170
// value already in b-field, but is it correct?
174
171
if existing_marker == correct_marker {
@@ -186,12 +183,12 @@ impl<T: Clone + DeserializeOwned + Serialize> BFieldMember<T> {
186
183
// mask out the existing!
187
184
self . insert_raw ( key, new_marker) ;
188
185
false
189
- } ,
186
+ }
190
187
Ordering :: Less => {
191
188
// nothing present; insert the value
192
189
self . insert_raw ( key, correct_marker) ;
193
190
true
194
- } ,
191
+ }
195
192
}
196
193
}
197
194
@@ -211,7 +208,7 @@ impl<T: Clone + DeserializeOwned + Serialize> BFieldMember<T> {
211
208
let marker_width = self . params . marker_width as usize ;
212
209
let hash = murmurhash3_x64_128 ( key, 0 ) ;
213
210
let mut merged_marker = BitVecSlice :: max_value ( ) ;
214
- let mut positions: [ usize ; 16 ] = [ 0 ; 16 ] ; // support up to 16 hashes
211
+ let mut positions: [ usize ; 16 ] = [ 0 ; 16 ] ; // support up to 16 hashes
215
212
for marker_ix in 0usize ..self . params . n_hashes as usize {
216
213
let pos = marker_pos ( hash, marker_ix, self . bitvec . size ( ) , marker_width) ;
217
214
positions[ marker_ix] = pos;
@@ -229,7 +226,7 @@ impl<T: Clone + DeserializeOwned + Serialize> BFieldMember<T> {
229
226
230
227
assert ! ( self . params. n_hashes <= 16 ) ;
231
228
for pos in positions. iter ( ) . take ( self . params . n_hashes as usize ) {
232
- let marker = self . bitvec . get_range ( * pos..* pos + marker_width) ;
229
+ let marker = self . bitvec . get_range ( * pos..* pos + marker_width) ;
233
230
merged_marker &= marker;
234
231
if merged_marker. count_ones ( ) < k {
235
232
return 0 ;
@@ -239,7 +236,12 @@ impl<T: Clone + DeserializeOwned + Serialize> BFieldMember<T> {
239
236
}
240
237
241
238
pub fn info ( & self ) -> ( usize , u8 , u8 , u8 ) {
242
- ( self . bitvec . size ( ) , self . params . n_hashes , self . params . marker_width , self . params . n_marker_bits )
239
+ (
240
+ self . bitvec . size ( ) ,
241
+ self . params . n_hashes ,
242
+ self . params . marker_width ,
243
+ self . params . n_marker_bits ,
244
+ )
243
245
}
244
246
}
245
247
@@ -319,7 +321,7 @@ fn test_bfield_bits_set() {
319
321
bfield. insert ( b"test2" , 200 ) ;
320
322
assert_eq ! ( bfield. bitvec. rank( 0 ..128 ) , 16 ) ;
321
323
bfield. insert ( b"test3" , 300 ) ;
322
- assert ! ( bfield. bitvec. rank( 0 ..128 ) < 24 ) ; // 23 bits set
324
+ assert ! ( bfield. bitvec. rank( 0 ..128 ) < 24 ) ; // 23 bits set
323
325
}
324
326
325
327
#[ test]
0 commit comments