Path: blob/main/crates/polars-parquet/src/arrow/read/deserialize/binary/plain.rs
8475 views
use super::BinaryIter;1use crate::parquet::error::ParquetResult;23pub fn decode_plain(4values: &[u8],5max_num_values: usize,6target: &mut Vec<u8>,7offsets: &mut Vec<i64>,8) -> ParquetResult<()> {9assert!(target.is_empty());10assert!(offsets.is_empty());1112offsets.reserve(max_num_values + 1);13offsets.push(0);1415// First, get the summed length so we can reserve once.16let mut total_buffer_size = 0;17let mut offset = 0;18offsets.extend(BinaryIter::new(values, max_num_values).map(|value| {19total_buffer_size += value.len();20offset += value.len() as i64;21offset22}));2324// Second, fill in all the data.25target.reserve(total_buffer_size);26for value in BinaryIter::new(values, max_num_values) {27target.extend_from_slice(value);28}2930Ok(())31}323334