arrow2/array/binary/
iterator.rs1use crate::{
2 array::{ArrayAccessor, ArrayValuesIter},
3 bitmap::utils::{BitmapIter, ZipValidity},
4 offset::Offset,
5};
6
7use super::{BinaryArray, MutableBinaryValuesArray};
8
9unsafe impl<'a, O: Offset> ArrayAccessor<'a> for BinaryArray<O> {
10 type Item = &'a [u8];
11
12 #[inline]
13 unsafe fn value_unchecked(&'a self, index: usize) -> Self::Item {
14 self.value_unchecked(index)
15 }
16
17 #[inline]
18 fn len(&self) -> usize {
19 self.len()
20 }
21}
22
23pub type BinaryValueIter<'a, O> = ArrayValuesIter<'a, BinaryArray<O>>;
25
26impl<'a, O: Offset> IntoIterator for &'a BinaryArray<O> {
27 type Item = Option<&'a [u8]>;
28 type IntoIter = ZipValidity<&'a [u8], BinaryValueIter<'a, O>, BitmapIter<'a>>;
29
30 fn into_iter(self) -> Self::IntoIter {
31 self.iter()
32 }
33}
34
35pub type MutableBinaryValuesIter<'a, O> = ArrayValuesIter<'a, MutableBinaryValuesArray<O>>;
37
38impl<'a, O: Offset> IntoIterator for &'a MutableBinaryValuesArray<O> {
39 type Item = &'a [u8];
40 type IntoIter = MutableBinaryValuesIter<'a, O>;
41
42 fn into_iter(self) -> Self::IntoIter {
43 self.iter()
44 }
45}