alamb opened a new issue #655:
URL: https://github.com/apache/arrow-rs/issues/655


   **Is your feature request related to a problem or challenge? Please describe 
what you are trying to do.**
   I would like to create integer arrays out of iterators of integers rather 
than an iterator of `Option<integer>`
   
   Specifically I would like to do something like this:
   ```rust
   let column_a = vec![1, 2, 3, 4].into_iter().collect::<Int32Array>();
   ```
   To collect a vector of integers into a `Int32Array` with no null values. 
However, this results in a compiler error:
   ```
   error[E0277]: the trait bound `{integer}: Borrow<Option<i32>>` is not 
satisfied
     --> src/main.rs:53:49
      |
   53 |     let column_a = vec![1, 2, 3, 4].into_iter().collect::<Int32Array>();
      |                                                 ^^^^^^^ the trait 
`Borrow<Option<i32>>` is not implemented for `{integer}`
      |
      = help: the following implementations were found:
                <&T as Borrow<T>>
                <&mut T as Borrow<T>>
                <Arc<T> as Borrow<T>>
                <Box<T, A> as Borrow<T>>
              and 16 others
      = note: required because of the requirements on the impl of 
`FromIterator<{integer}>` for 
`PrimitiveArray<datafusion::arrow::datatypes::Int32Type>`
   ```
   
   The `FromIter` implementation that is provided uses `Option<i32>` so this 
*does* work
   ```rust
   let column_a = vec![Some(1), Some(2), Some(3), 
Some(4)].into_iter().collect::<Int32Array>();
   ```
   
   **Describe the solution you'd like**
   I would like a FromIter impementation for the various types that allows the 
following to work:
   ```rust
       // signed
       let column_a = vec![1, 2, 3, 4].into_iter().collect::<Int8Array>();
       let column_a = vec![1, 2, 3, 4].into_iter().collect::<Int16Array>();
       let column_a = vec![1, 2, 3, 4].into_iter().collect::<Int32Array>();
       let column_a = vec![1, 2, 3, 4].into_iter().collect::<Int64Array>();
      // unsigned
       let column_a = vec![1, 2, 3, 4].into_iter().collect::<UInt8Array>();
       let column_a = vec![1, 2, 3, 4].into_iter().collect::<UInt16Array>();
       let column_a = vec![1, 2, 3, 4].into_iter().collect::<UInt32Array>();
       let column_a = vec![1, 2, 3, 4].into_iter().collect::<UInt64Array>();
      // floats
       let column_a = vec![1, 2, 3, 4].into_iter().collect::<Float32>();
       let column_a = vec![1, 2, 3, 4].into_iter().collect::<Float64>();
       let column_a = vec![1.0, 2.0, 3.0, 4.0].into_iter().collect::<Float32>();
       let column_a = vec![1.0, 2.0, 3.0, 40].into_iter().collect::<Float64>();
      // strs
       let column_a = vec!["foo", "bar", 
"baz"].into_iter().collect::<Float32>();
   ```
   
   **Additional context**
   Add any other context or screenshots about the feature request here.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to