@@ -3,15 +3,15 @@ use std::sync::Arc;
3
3
use super :: Growable ;
4
4
use crate :: array:: growable:: utils:: { extend_validity, prepare_validity} ;
5
5
use crate :: array:: { Array , BooleanArray } ;
6
- use crate :: bitmap:: MutableBitmap ;
6
+ use crate :: bitmap:: BitmapBuilder ;
7
7
use crate :: datatypes:: ArrowDataType ;
8
8
9
9
/// Concrete [`Growable`] for the [`BooleanArray`].
10
10
pub struct GrowableBoolean < ' a > {
11
11
arrays : Vec < & ' a BooleanArray > ,
12
12
dtype : ArrowDataType ,
13
- validity : Option < MutableBitmap > ,
14
- values : MutableBitmap ,
13
+ validity : Option < BitmapBuilder > ,
14
+ values : BitmapBuilder ,
15
15
}
16
16
17
17
impl < ' a > GrowableBoolean < ' a > {
@@ -30,7 +30,7 @@ impl<'a> GrowableBoolean<'a> {
30
30
Self {
31
31
arrays,
32
32
dtype,
33
- values : MutableBitmap :: with_capacity ( capacity) ,
33
+ values : BitmapBuilder :: with_capacity ( capacity) ,
34
34
validity : prepare_validity ( use_validity, capacity) ,
35
35
}
36
36
}
@@ -41,8 +41,8 @@ impl<'a> GrowableBoolean<'a> {
41
41
42
42
BooleanArray :: new (
43
43
self . dtype . clone ( ) ,
44
- values. into ( ) ,
45
- validity. map ( |v| v. into ( ) ) ,
44
+ values. freeze ( ) ,
45
+ validity. map ( |v| v. freeze ( ) ) ,
46
46
)
47
47
}
48
48
}
@@ -55,11 +55,7 @@ impl<'a> Growable<'a> for GrowableBoolean<'a> {
55
55
let values = array. values ( ) ;
56
56
57
57
let ( slice, offset, _) = values. as_slice ( ) ;
58
- // SAFETY: invariant offset + length <= slice.len()
59
- unsafe {
60
- self . values
61
- . extend_from_slice_unchecked ( slice, start + offset, len) ;
62
- }
58
+ self . values . extend_from_slice ( slice, start + offset, len) ;
63
59
}
64
60
65
61
fn extend_validity ( & mut self , additional : usize ) {
@@ -85,6 +81,10 @@ impl<'a> Growable<'a> for GrowableBoolean<'a> {
85
81
86
82
impl < ' a > From < GrowableBoolean < ' a > > for BooleanArray {
87
83
fn from ( val : GrowableBoolean < ' a > ) -> Self {
88
- BooleanArray :: new ( val. dtype , val. values . into ( ) , val. validity . map ( |v| v. into ( ) ) )
84
+ BooleanArray :: new (
85
+ val. dtype ,
86
+ val. values . freeze ( ) ,
87
+ val. validity . map ( |v| v. freeze ( ) ) ,
88
+ )
89
89
}
90
90
}
0 commit comments