polars_core/chunked_array/
binary_offset.rs

1use polars_error::PolarsResult;
2use polars_row::RowEncodingOptions;
3
4use crate::prelude::{BinaryOffsetChunked, Field};
5
6#[cfg(feature = "dtype-struct")]
7impl BinaryOffsetChunked {
8    pub fn row_decode_ordered(
9        &self,
10        fields: &[Field],
11        descending: &[bool],
12        nulls_last: &[bool],
13    ) -> PolarsResult<super::StructChunked> {
14        assert_eq!(fields.len(), descending.len());
15        assert_eq!(fields.len(), nulls_last.len());
16
17        let mut opts = Vec::with_capacity(fields.len());
18        opts.extend(
19            descending
20                .iter()
21                .zip(nulls_last)
22                .map(|(d, n)| RowEncodingOptions::new_sorted(*d, *n)),
23        );
24        crate::prelude::row_encode::row_encoding_decode(self, fields, &opts)
25    }
26
27    pub fn row_decode_unordered(&self, fields: &[Field]) -> PolarsResult<super::StructChunked> {
28        let mut opts = Vec::with_capacity(fields.len());
29        opts.extend(std::iter::repeat_n(
30            RowEncodingOptions::new_unsorted(),
31            fields.len(),
32        ));
33        super::ops::row_encode::row_encoding_decode(self, fields, &opts)
34    }
35}