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]