arrow2 0.15.0

Unofficial implementation of Apache Arrow spec in safe Rust
Documentation
use arrow2::{
    datatypes::{DataType, Field},
    scalar::{BooleanScalar, Scalar, StructScalar},
};

#[allow(clippy::eq_op)]
#[test]
fn equal() {
    let dt = DataType::Struct(vec![Field::new("a", DataType::Boolean, true)]);
    let a = StructScalar::new(
        dt.clone(),
        Some(vec![
            Box::new(BooleanScalar::from(Some(true))) as Box<dyn Scalar>
        ]),
    );
    let b = StructScalar::new(dt.clone(), None);
    assert_eq!(a, a);
    assert_eq!(b, b);
    assert!(a != b);
    let b = StructScalar::new(
        dt,
        Some(vec![
            Box::new(BooleanScalar::from(Some(false))) as Box<dyn Scalar>
        ]),
    );
    assert!(a != b);
    assert_eq!(b, b);
}

#[test]
fn basics() {
    let dt = DataType::Struct(vec![Field::new("a", DataType::Boolean, true)]);

    let values = vec![Box::new(BooleanScalar::from(Some(true))) as Box<dyn Scalar>];

    let a = StructScalar::new(dt.clone(), Some(values.clone()));

    assert_eq!(a.values(), &values);
    assert_eq!(a.data_type(), &dt);
    assert!(a.is_valid());

    let _: &dyn std::any::Any = a.as_any();
}