polars_core/chunked_array/
binary_offset.rs1use 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}