Thanks to visit codestin.com
Credit goes to docs.rs

arrow2/array/binary/
iterator.rs

1use 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
23/// Iterator of values of an [`BinaryArray`].
24pub 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
35/// Iterator of values of an [`MutableBinaryValuesArray`].
36pub 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}