pub fn take_arrays(
    arrays: &[ArrayRef],
    indices: &dyn Array,
    options: Option<TakeOptions>,
) -> Result<Vec<ArrayRef>, ArrowError>Expand description
For each [ArrayRef] in the Vec<ArrayRef>, take elements by index and create a new
Vec<ArrayRef> from those indices.
┌────────┬────────┐
│        │        │           ┌────────┐                                ┌────────┬────────┐
│   A    │   1    │           │        │                                │        │        │
├────────┼────────┤           │   0    │                                │   A    │   1    │
│        │        │           ├────────┤                                ├────────┼────────┤
│   D    │   4    │           │        │                                │        │        │
├────────┼────────┤           │   2    │  take_arrays(values,indices)   │   B    │   2    │
│        │        │           ├────────┤                                ├────────┼────────┤
│   B    │   2    │           │        │  ───────────────────────────►  │        │        │
├────────┼────────┤           │   3    │                                │   C    │   3    │
│        │        │           ├────────┤                                ├────────┼────────┤
│   C    │   3    │           │        │                                │        │        │
├────────┼────────┤           │   1    │                                │   D    │   4    │
│        │        │           └────────┘                                └────────┼────────┘
│   E    │   5    │
└────────┴────────┘
   values arrays             indices array                                      result§Errors
This function errors whenever:
- An index cannot be casted to usize(typically 32 bit architectures)
- An index is out of bounds and optionsis set to check bounds.
§Safety
When options is not set to check bounds, taking indexes after len will panic.
§Examples
let string_values = Arc::new(StringArray::from(vec!["zero", "one", "two"]));
let values = Arc::new(UInt32Array::from(vec![0, 1, 2]));
// Take items at index 2, and 1:
let indices = UInt32Array::from(vec![2, 1]);
let taken_arrays = take_arrays(&[string_values, values], &indices, None).unwrap();
let taken_string = taken_arrays[0].as_string::<i32>();
assert_eq!(*taken_string, StringArray::from(vec!["two", "one"]));
let taken_values = taken_arrays[1].as_primitive();
assert_eq!(*taken_values, UInt32Array::from(vec![2, 1]));