Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-arrow/src/legacy/array/null.rs
6939 views
1
use std::any::Any;
2
3
use crate::array::{Array, MutableArray, NullArray};
4
use crate::bitmap::MutableBitmap;
5
use crate::datatypes::ArrowDataType;
6
7
#[derive(Debug, Default, Clone)]
8
pub struct MutableNullArray {
9
len: usize,
10
}
11
12
impl MutableArray for MutableNullArray {
13
fn dtype(&self) -> &ArrowDataType {
14
&ArrowDataType::Null
15
}
16
17
fn len(&self) -> usize {
18
self.len
19
}
20
21
fn validity(&self) -> Option<&MutableBitmap> {
22
None
23
}
24
25
fn as_box(&mut self) -> Box<dyn Array> {
26
Box::new(NullArray::new_null(ArrowDataType::Null, self.len))
27
}
28
29
fn as_any(&self) -> &dyn Any {
30
self
31
}
32
33
fn as_mut_any(&mut self) -> &mut dyn Any {
34
self
35
}
36
37
fn push_null(&mut self) {
38
self.len += 1;
39
}
40
41
fn reserve(&mut self, _additional: usize) {
42
// no-op
43
}
44
45
fn shrink_to_fit(&mut self) {
46
// no-op
47
}
48
}
49
50
impl MutableNullArray {
51
pub fn new(len: usize) -> Self {
52
MutableNullArray { len }
53
}
54
55
pub fn extend_nulls(&mut self, null_count: usize) {
56
self.len += null_count;
57
}
58
}
59
60