polars_core/chunked_array/builder/list/
null.rs1use 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}