polars_arrow/legacy/array/
null.rs1use 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 }
44
45 fn shrink_to_fit(&mut self) {
46 }
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}