@@ -166,43 +166,42 @@ pub(crate) fn write_bitmap_to_bytes(
166
166
containers. push ( container) ;
167
167
}
168
168
// https://github.com/RoaringBitmap/RoaringFormatSpec
169
- use byteorder:: { WriteBytesExt , LE } ;
170
169
const SERIAL_COOKIE_NO_RUNCONTAINER : u32 = 12346 ;
171
170
const SERIAL_COOKIE : u32 = 12347 ;
172
171
const NO_OFFSET_THRESHOLD : u32 = 4 ;
173
172
let size: u32 = containers. len ( ) . try_into ( ) . unwrap ( ) ;
174
173
let start_offset = if has_run {
175
- out. write_u32 :: < LE > ( SERIAL_COOKIE | ( ( size - 1 ) << 16 ) ) ?;
174
+ out. write_all ( & u32 :: to_le_bytes ( SERIAL_COOKIE | ( ( size - 1 ) << 16 ) ) ) ?;
176
175
for set in containers. chunks ( 8 ) {
177
176
let mut b = 0 ;
178
177
for ( i, container) in set. iter ( ) . enumerate ( ) {
179
178
if matches ! ( container, & Container :: Run ( ..) ) {
180
179
b |= 1 << i;
181
180
}
182
181
}
183
- out. write_u8 ( b ) ?;
182
+ out. write_all ( & [ b ] ) ?;
184
183
}
185
184
if size < NO_OFFSET_THRESHOLD {
186
185
4 + 4 * size + ( ( size + 7 ) / 8 )
187
186
} else {
188
187
4 + 8 * size + ( ( size + 7 ) / 8 )
189
188
}
190
189
} else {
191
- out. write_u32 :: < LE > ( SERIAL_COOKIE_NO_RUNCONTAINER ) ?;
192
- out. write_u32 :: < LE > ( containers. len ( ) . try_into ( ) . unwrap ( ) ) ?;
190
+ out. write_all ( & u32 :: to_le_bytes ( SERIAL_COOKIE_NO_RUNCONTAINER ) ) ?;
191
+ out. write_all ( & u32 :: to_le_bytes ( containers. len ( ) . try_into ( ) . unwrap ( ) ) ) ?;
193
192
4 + 4 + 4 * size + 4 * size
194
193
} ;
195
194
for ( & key, container) in keys. iter ( ) . zip ( & containers) {
196
195
// descriptive header
197
196
let key: u32 = key. into ( ) ;
198
197
let count: u32 = container. popcount ( ) - 1 ;
199
- out. write_u32 :: < LE > ( ( count << 16 ) | key) ?;
198
+ out. write_all ( & u32 :: to_le_bytes ( ( count << 16 ) | key) ) ?;
200
199
}
201
200
if !has_run || size >= NO_OFFSET_THRESHOLD {
202
201
// offset header
203
202
let mut starting_offset = start_offset;
204
203
for container in & containers {
205
- out. write_u32 :: < LE > ( starting_offset) ?;
204
+ out. write_all ( & u32 :: to_le_bytes ( starting_offset) ) ?;
206
205
starting_offset += match container {
207
206
Container :: Bits ( _) => 8192u32 ,
208
207
Container :: Array ( array) => u32:: try_from ( array. len ( ) ) . unwrap ( ) * 2 ,
@@ -214,19 +213,19 @@ pub(crate) fn write_bitmap_to_bytes(
214
213
match container {
215
214
Container :: Bits ( bits) => {
216
215
for chunk in bits. iter ( ) {
217
- out. write_u64 :: < LE > ( * chunk) ?;
216
+ out. write_all ( & u64 :: to_le_bytes ( * chunk) ) ?;
218
217
}
219
218
}
220
219
Container :: Array ( array) => {
221
220
for value in array. iter ( ) {
222
- out. write_u16 :: < LE > ( * value) ?;
221
+ out. write_all ( & u16 :: to_le_bytes ( * value) ) ?;
223
222
}
224
223
}
225
224
Container :: Run ( runs) => {
226
- out. write_u16 :: < LE > ( ( runs. len ( ) ) . try_into ( ) . unwrap ( ) ) ?;
225
+ out. write_all ( & u16 :: to_le_bytes ( runs. len ( ) . try_into ( ) . unwrap ( ) ) ) ?;
227
226
for ( start, lenm1) in runs. iter ( ) . copied ( ) {
228
- out. write_u16 :: < LE > ( start) ?;
229
- out. write_u16 :: < LE > ( lenm1) ?;
227
+ out. write_all ( & u16 :: to_le_bytes ( start) ) ?;
228
+ out. write_all ( & u16 :: to_le_bytes ( lenm1) ) ?;
230
229
}
231
230
}
232
231
}
0 commit comments