typed_arrow/bridge/
null_type.rs

1//! Arrow `Null` type binding.
2
3use arrow_array::{builder::NullBuilder, NullArray};
4use arrow_schema::DataType;
5
6use super::ArrowBinding;
7
8/// Marker type for Arrow `DataType::Null` columns.
9///
10/// A `Null` column contains only nulls. Appending a value or a null both append
11/// a null slot. This maps to `arrow_array::NullArray` and uses `NullBuilder`.
12pub struct Null;
13
14impl ArrowBinding for Null {
15    type Builder = NullBuilder;
16    type Array = NullArray;
17    fn data_type() -> DataType {
18        DataType::Null
19    }
20    fn new_builder(_capacity: usize) -> Self::Builder {
21        NullBuilder::new()
22    }
23    fn append_value(b: &mut Self::Builder, _v: &Self) {
24        b.append_null();
25    }
26    fn append_null(b: &mut Self::Builder) {
27        b.append_null();
28    }
29    fn finish(mut b: Self::Builder) -> Self::Array {
30        b.finish()
31    }
32}