Constructs an [`ArrayRef`] from an [`ArrayData`]. # Notes: It is more efficient to directly construct the concrete array type rather than using this function as creating an `ArrayData` requires at least one additional allocation (the Vec of buffers). # Example: ``` # use std::sync::Arc; # use arrow_data::ArrayData; # use arrow_array::{make_array, ArrayRef, Int32Array}; # use arrow_buffer::{Buff
(data: ArrayData)
| 888 | /// assert_eq!(&array, &int32_array); |
| 889 | /// ``` |
| 890 | pub fn make_array(data: ArrayData) -> ArrayRef { |
| 891 | match data.data_type() { |
| 892 | DataType::Boolean => Arc::new(BooleanArray::from(data)) as ArrayRef, |
| 893 | DataType::Int8 => Arc::new(Int8Array::from(data)) as ArrayRef, |
| 894 | DataType::Int16 => Arc::new(Int16Array::from(data)) as ArrayRef, |
| 895 | DataType::Int32 => Arc::new(Int32Array::from(data)) as ArrayRef, |
| 896 | DataType::Int64 => Arc::new(Int64Array::from(data)) as ArrayRef, |
| 897 | DataType::UInt8 => Arc::new(UInt8Array::from(data)) as ArrayRef, |
| 898 | DataType::UInt16 => Arc::new(UInt16Array::from(data)) as ArrayRef, |
| 899 | DataType::UInt32 => Arc::new(UInt32Array::from(data)) as ArrayRef, |
| 900 | DataType::UInt64 => Arc::new(UInt64Array::from(data)) as ArrayRef, |
| 901 | DataType::Float16 => Arc::new(Float16Array::from(data)) as ArrayRef, |
| 902 | DataType::Float32 => Arc::new(Float32Array::from(data)) as ArrayRef, |
| 903 | DataType::Float64 => Arc::new(Float64Array::from(data)) as ArrayRef, |
| 904 | DataType::Date32 => Arc::new(Date32Array::from(data)) as ArrayRef, |
| 905 | DataType::Date64 => Arc::new(Date64Array::from(data)) as ArrayRef, |
| 906 | DataType::Time32(TimeUnit::Second) => Arc::new(Time32SecondArray::from(data)) as ArrayRef, |
| 907 | DataType::Time32(TimeUnit::Millisecond) => { |
| 908 | Arc::new(Time32MillisecondArray::from(data)) as ArrayRef |
| 909 | } |
| 910 | DataType::Time64(TimeUnit::Microsecond) => { |
| 911 | Arc::new(Time64MicrosecondArray::from(data)) as ArrayRef |
| 912 | } |
| 913 | DataType::Time64(TimeUnit::Nanosecond) => { |
| 914 | Arc::new(Time64NanosecondArray::from(data)) as ArrayRef |
| 915 | } |
| 916 | DataType::Timestamp(TimeUnit::Second, _) => { |
| 917 | Arc::new(TimestampSecondArray::from(data)) as ArrayRef |
| 918 | } |
| 919 | DataType::Timestamp(TimeUnit::Millisecond, _) => { |
| 920 | Arc::new(TimestampMillisecondArray::from(data)) as ArrayRef |
| 921 | } |
| 922 | DataType::Timestamp(TimeUnit::Microsecond, _) => { |
| 923 | Arc::new(TimestampMicrosecondArray::from(data)) as ArrayRef |
| 924 | } |
| 925 | DataType::Timestamp(TimeUnit::Nanosecond, _) => { |
| 926 | Arc::new(TimestampNanosecondArray::from(data)) as ArrayRef |
| 927 | } |
| 928 | DataType::Interval(IntervalUnit::YearMonth) => { |
| 929 | Arc::new(IntervalYearMonthArray::from(data)) as ArrayRef |
| 930 | } |
| 931 | DataType::Interval(IntervalUnit::DayTime) => { |
| 932 | Arc::new(IntervalDayTimeArray::from(data)) as ArrayRef |
| 933 | } |
| 934 | DataType::Interval(IntervalUnit::MonthDayNano) => { |
| 935 | Arc::new(IntervalMonthDayNanoArray::from(data)) as ArrayRef |
| 936 | } |
| 937 | DataType::Duration(TimeUnit::Second) => { |
| 938 | Arc::new(DurationSecondArray::from(data)) as ArrayRef |
| 939 | } |
| 940 | DataType::Duration(TimeUnit::Millisecond) => { |
| 941 | Arc::new(DurationMillisecondArray::from(data)) as ArrayRef |
| 942 | } |
| 943 | DataType::Duration(TimeUnit::Microsecond) => { |
| 944 | Arc::new(DurationMicrosecondArray::from(data)) as ArrayRef |
| 945 | } |
| 946 | DataType::Duration(TimeUnit::Nanosecond) => { |
| 947 | Arc::new(DurationNanosecondArray::from(data)) as ArrayRef |