1 2 3 4 5 6 7 8 9 10 11 12 13
use arrow::array::{ArrayRef, UInt32Array, Utf8Array};
use arrow::buffer::Buffer;
use arrow::datatypes::DataType;
use std::sync::Arc;
pub fn string_lengths(array: &Utf8Array<i64>) -> ArrayRef {
let values = array.offsets().windows(2).map(|x| (x[1] - x[0]) as u32);
let values = Buffer::from_trusted_len_iter(values);
let array = UInt32Array::from_data(DataType::UInt32, values, array.validity().cloned());
Arc::new(array)
}