polars_arrow/array/list/
fmt.rs

1use std::fmt::{Debug, Formatter, Result, Write};
2
3use super::super::fmt::{get_display, write_vec};
4use super::ListArray;
5use crate::offset::Offset;
6
7pub fn write_value<O: Offset, W: Write>(
8    array: &ListArray<O>,
9    index: usize,
10    null: &'static str,
11    f: &mut W,
12) -> Result {
13    let values = array.value(index);
14    let writer = |f: &mut W, index| get_display(values.as_ref(), null)(f, index);
15    write_vec(f, writer, None, values.len(), null, false)
16}
17
18impl<O: Offset> Debug for ListArray<O> {
19    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
20        let writer = |f: &mut Formatter, index| write_value(self, index, "None", f);
21
22        let head = if O::IS_LARGE {
23            "LargeListArray"
24        } else {
25            "ListArray"
26        };
27        write!(f, "{head}")?;
28        write_vec(f, writer, self.validity(), self.len(), "None", false)
29    }
30}