pub fn can_take(data_type: &DataType) -> bool {
    matches!(
        data_type,
        DataType::Null
            | DataType::Boolean
            | DataType::Int8
            | DataType::Int16
            | DataType::Int32
            | DataType::Date32
            | DataType::Time32(_)
            | DataType::Interval(_)
            | DataType::Int64
            | DataType::Date64
            | DataType::Time64(_)
            | DataType::Duration(_)
            | DataType::Timestamp(_, _)
            | DataType::UInt8
            | DataType::UInt16
            | DataType::UInt32
            | DataType::UInt64
            | DataType::Float16
            | DataType::Float32
            | DataType::Float64
            | DataType::Decimal(_, _)
            | DataType::Utf8
            | DataType::LargeUtf8
            | DataType::Binary
            | DataType::LargeBinary
            | DataType::Struct(_)
            | DataType::List(_)
            | DataType::LargeList(_)
            | DataType::Dictionary(..)
    )
}
/// Checks if an array of type `datatype` can perform take operation
///
/// # Examples
/// ```
/// use arrow2::compute::take::can_take;
/// use arrow2::datatypes::{DataType};
///
/// let data_type = DataType::Int8;
/// assert_eq!(can_take(&data_type), true);
/// ```
Checks if an array of type `datatype` can perform take operation
Checks if an array of type ` datatype ` can perform take operation
pub fn can_take(data_type: &DataType) -> bool {
    matches!(
        data_type,
        DataType::Null
            | DataType::Boolean
            | DataType::Int8
            | DataType::Int16
            | DataType::Int32
            | DataType::Date32
            | DataType::Time32(_)
            | DataType::Interval(_)
            | DataType::Int64
            | DataType::Date64
            | DataType::Time64(_)
            | DataType::Duration(_)
            | DataType::Timestamp(_, _)
            | DataType::UInt8
            | DataType::UInt16
            | DataType::UInt32
            | DataType::UInt64
            | DataType::Float16
            | DataType::Float32
            | DataType::Float64
            | DataType::Decimal(_, _)
            | DataType::Utf8
            | DataType::LargeUtf8
            | DataType::Binary
            | DataType::LargeBinary
            | DataType::Struct(_)
            | DataType::List(_)
            | DataType::LargeList(_)
            | DataType::Dictionary(..)
    )
}
pub fn can_take ( data_type : & DataType ) -> bool { matches ! ( data_type DataType Null DataType Boolean DataType Int8 DataType Int16 DataType Int32 DataType Date32 DataType Time32 ( ) DataType Interval ( ) DataType Int64 DataType Date64 DataType Time64 ( ) DataType Duration ( ) DataType Timestamp ( ) DataType UInt8 DataType UInt16 DataType UInt32 DataType UInt64 DataType Float16 DataType Float32 DataType Float64 DataType Decimal ( ) DataType Utf8 DataType LargeUtf8 DataType Binary DataType LargeBinary DataType Struct ( ) DataType List ( ) DataType LargeList ( ) DataType Dictionary ( ) ) }
Checks if an array of type `datatype` can perform take operation
Checks if an array of type ` datatype ` can perform take operation
data_type
&DataType
data_type
&DataType
examples
```
use arrow2::compute::take::can_take;
use arrow2::datatypes::{DataType}.

let data_type = DataType::Int8;
assert_eq!(can_take(&data_type), true);
```
` ` ` use arrow2 :: compute :: take :: can_take ; use arrow2 :: datatypes :: { DataType } . let data_type = DataType :: Int8 ; assert_eq! ( can_take ( &data_type ) true ) ; ` ` `