polars_core/chunked_array/builder/list/
null.rs

1use super::*;
2
3pub struct ListNullChunkedBuilder {
4    builder: LargeListNullBuilder,
5    name: PlSmallStr,
6}
7
8impl ListNullChunkedBuilder {
9    pub fn new(name: PlSmallStr, capacity: usize) -> Self {
10        ListNullChunkedBuilder {
11            builder: LargeListNullBuilder::with_capacity(capacity),
12            name,
13        }
14    }
15
16    pub(crate) fn append(&mut self, s: &Series) {
17        let value_builder = self.builder.mut_values();
18        value_builder.extend_nulls(s.len());
19        self.builder.try_push_valid().unwrap();
20    }
21
22    pub(crate) fn append_with_len(&mut self, len: usize) {
23        let value_builder = self.builder.mut_values();
24        value_builder.extend_nulls(len);
25        self.builder.try_push_valid().unwrap();
26    }
27}
28
29impl ListBuilderTrait for ListNullChunkedBuilder {
30    #[inline]
31    fn append_series(&mut self, s: &Series) -> PolarsResult<()> {
32        self.append(s);
33        Ok(())
34    }
35
36    #[inline]
37    fn append_null(&mut self) {
38        self.builder.push_null();
39    }
40
41    fn finish(&mut self) -> ListChunked {
42        unsafe {
43            ListChunked::from_chunks_and_dtype_unchecked(
44                self.name.clone(),
45                vec![self.builder.as_box()],
46                DataType::List(Box::new(DataType::Null)),
47            )
48        }
49    }
50}