polars_arrow/legacy/array/
null.rs

1use std::any::Any;
2
3use crate::array::{Array, MutableArray, NullArray};
4use crate::bitmap::MutableBitmap;
5use crate::datatypes::ArrowDataType;
6
7#[derive(Debug, Default, Clone)]
8pub struct MutableNullArray {
9    len: usize,
10}
11
12impl 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
50impl 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}