vortex_roaring/boolean/
compress.rs1use croaring::Bitmap;
2use vortex_array::array::BoolArray;
3use vortex_array::ArrayLen;
4use vortex_error::VortexResult;
5
6use crate::RoaringBoolArray;
7
8pub fn roaring_bool_encode(bool_array: BoolArray) -> VortexResult<RoaringBoolArray> {
9 let mut bitmap = Bitmap::new();
10 bitmap.extend(bool_array.boolean_buffer().set_indices().map(|i| i as u32));
11 bitmap.run_optimize();
12 bitmap.shrink_to_fit();
13
14 RoaringBoolArray::try_new(bitmap, bool_array.len())
15}