You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Neville Dipale (Jira)" <ji...@apache.org> on 2020/09/25 17:31:00 UTC

[jira] [Commented] (ARROW-7700) [Rust] All array types should have iterators and FromIterator support.

    [ https://issues.apache.org/jira/browse/ARROW-7700?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17202323#comment-17202323 ] 

Neville Dipale commented on ARROW-7700:
---------------------------------------

[~jorgecarleitao] might be related to what you're working on

> [Rust] All array types should have iterators and FromIterator support.
> ----------------------------------------------------------------------
>
>                 Key: ARROW-7700
>                 URL: https://issues.apache.org/jira/browse/ARROW-7700
>             Project: Apache Arrow
>          Issue Type: Wish
>          Components: Rust
>            Reporter: Andy Thomason
>            Priority: Major
>              Labels: Usability
>
> Array types should have an Iterable trait that generates plain or nullable iterators.
> {code}
> pub trait Iterable<'a>
> where Self::IterType: std::iter::Iterator
> {
>     type IterType;
>     fn iter(&'a self) -> Self::IterType;
>     fn iter_nulls(&'a self) -> NullableIterator<Self::IterType>;
> }
> {code}
> IterType depends on the array type from standard slice iterators for primitive types, string iterators for UTF8 types and composite iterators (generating other iterators) for list, struct and dictionary types.
> The NullableIterator type should bundle a null bitmap pointer with another iterator type to form a composite iterator that returns an option:
> {code}
> /// Convert any iterator to a nullable iterator by using the null bitmap.
> #[derive(Debug, PartialEq, Clone)]
> pub struct NullableIterator<T: Iterator> {
>     iter: T,
>     i: usize,
>     null_bitmap: *const u8,
> }
> impl<T: Iterator> NullableIterator<T> {
>     fn from(iter: T, null_bitmap: &Option<Bitmap>, offset: usize) -> Self;
> }
> {code}
> For more details, some exploratory work has been done here: https://github.com/andy-thomason/arrow/blob/ARROW-iterators/rust/arrow/src/array/array.rs#L1711



--
This message was sent by Atlassian Jira
(v8.3.4#803005)