1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use crate::{
array::{list::ListValuesIter, Array, IterableListArray},
bitmap::utils::{zip_validity, ZipValidity},
};
use super::FixedSizeListArray;
impl IterableListArray for FixedSizeListArray {
unsafe fn value_unchecked(&self, i: usize) -> Box<dyn Array> {
FixedSizeListArray::value_unchecked(self, i)
}
}
type ValuesIter<'a> = ListValuesIter<'a, FixedSizeListArray>;
type ZipIter<'a> = ZipValidity<'a, Box<dyn Array>, ValuesIter<'a>>;
impl<'a> IntoIterator for &'a FixedSizeListArray {
type Item = Option<Box<dyn Array>>;
type IntoIter = ZipIter<'a>;
fn into_iter(self) -> Self::IntoIter {
self.iter()
}
}
impl<'a> FixedSizeListArray {
pub fn iter(&'a self) -> ZipIter<'a> {
zip_validity(
ListValuesIter::new(self),
self.validity.as_ref().map(|x| x.iter()),
)
}
pub fn values_iter(&'a self) -> ValuesIter<'a> {
ListValuesIter::new(self)
}
}