From 85807046a80104868d3292458f985838ed1aa923 Mon Sep 17 00:00:00 2001 From: wiedld Date: Sat, 4 Jan 2025 23:13:39 -0800 Subject: [PATCH] test: demostrate that we already have the iterators implemented --- arrow-array/src/array/byte_array.rs | 1 + arrow-array/src/array/byte_view_array.rs | 1 + .../src/array/fixed_size_binary_array.rs | 1 + arrow-array/src/array/mod.rs | 25 +++++++++++++++++++ 4 files changed, 28 insertions(+) diff --git a/arrow-array/src/array/byte_array.rs b/arrow-array/src/array/byte_array.rs index f2b22507081d..81856d0b0a00 100644 --- a/arrow-array/src/array/byte_array.rs +++ b/arrow-array/src/array/byte_array.rs @@ -544,6 +544,7 @@ impl From> for ArrayData { } } +/// This does the into_iter() for &'a GenericByteArray impl<'a, T: ByteArrayType> IntoIterator for &'a GenericByteArray { type Item = Option<&'a T::Native>; type IntoIter = ArrayIter; diff --git a/arrow-array/src/array/byte_view_array.rs b/arrow-array/src/array/byte_view_array.rs index 9d2d396a5266..885288305a9e 100644 --- a/arrow-array/src/array/byte_view_array.rs +++ b/arrow-array/src/array/byte_view_array.rs @@ -623,6 +623,7 @@ impl<'a, T: ByteViewType + ?Sized> ArrayAccessor for &'a GenericByteViewArray } } +/// This does the into_iter() for &'a GenericByteViewArray impl<'a, T: ByteViewType + ?Sized> IntoIterator for &'a GenericByteViewArray { type Item = Option<&'a T::Native>; type IntoIter = ArrayIter; diff --git a/arrow-array/src/array/fixed_size_binary_array.rs b/arrow-array/src/array/fixed_size_binary_array.rs index 576b8012491b..7be7467c148f 100644 --- a/arrow-array/src/array/fixed_size_binary_array.rs +++ b/arrow-array/src/array/fixed_size_binary_array.rs @@ -648,6 +648,7 @@ impl<'a> ArrayAccessor for &'a FixedSizeBinaryArray { } } +/// This does the into_iter() for &'a FixedSizeBinaryArray impl<'a> IntoIterator for &'a FixedSizeBinaryArray { type Item = Option<&'a [u8]>; type IntoIter = FixedSizeBinaryIter<'a>; diff --git a/arrow-array/src/array/mod.rs b/arrow-array/src/array/mod.rs index 23b3cb628aaf..d897ea5a30a4 100644 --- a/arrow-array/src/array/mod.rs +++ b/arrow-array/src/array/mod.rs @@ -1248,4 +1248,29 @@ mod tests { let expected: Int32Array = vec![1, 2, 3].into_iter().map(Some).collect(); assert_eq!(array, expected); } + + use crate::builder::{BinaryViewBuilder, FixedSizeBinaryBuilder}; + use crate::ArrayAccessor; + + fn use_binary_array<'a>(array: impl ArrayAccessor) { + // Have to manually iterate over the array + for i in 0..array.len() { + dbg!(String::from_utf8(array.value(i).to_vec()).unwrap()); + } + } + + #[test] + fn binary_array() { + let mut builder = BinaryViewBuilder::new(); + builder.append_value(b"foo"); + builder.append_value(b"bar"); + builder.append_value(b"baz"); + use_binary_array(&builder.finish()); + + let mut builder = FixedSizeBinaryBuilder::new(3); + builder.append_value(b"foo").unwrap(); + builder.append_value(b"bar").unwrap(); + builder.append_value(b"baz").unwrap(); + use_binary_array(&builder.finish()); + } }