diff --git a/src/array/equal/mod.rs b/src/array/equal/mod.rs index ed0dae28075..e916aaa0bb6 100644 --- a/src/array/equal/mod.rs +++ b/src/array/equal/mod.rs @@ -15,9 +15,21 @@ mod struct_; mod union; mod utf8; -impl PartialEq for dyn Array { - fn eq(&self, other: &Self) -> bool { - equal(self, other) +impl PartialEq for dyn Array + '_ { + fn eq(&self, that: &dyn Array) -> bool { + equal(self, that) + } +} + +impl PartialEq for Arc { + fn eq(&self, that: &dyn Array) -> bool { + equal(&**self, that) + } +} + +impl PartialEq for Box { + fn eq(&self, that: &dyn Array) -> bool { + equal(&**self, that) } } diff --git a/src/scalar/equal.rs b/src/scalar/equal.rs index 63af3e0fcde..519f49656ed 100644 --- a/src/scalar/equal.rs +++ b/src/scalar/equal.rs @@ -1,9 +1,23 @@ +use std::sync::Arc; + use super::*; use crate::types::days_ms; -impl PartialEq for dyn Scalar { - fn eq(&self, other: &Self) -> bool { - equal(self, other) +impl PartialEq for dyn Scalar + '_ { + fn eq(&self, that: &dyn Scalar) -> bool { + equal(self, that) + } +} + +impl PartialEq for Arc { + fn eq(&self, that: &dyn Scalar) -> bool { + equal(&**self, that) + } +} + +impl PartialEq for Box { + fn eq(&self, that: &dyn Scalar) -> bool { + equal(&**self, that) } } diff --git a/tests/it/array/mod.rs b/tests/it/array/mod.rs index bfba8624b1c..00b735b2852 100644 --- a/tests/it/array/mod.rs +++ b/tests/it/array/mod.rs @@ -97,3 +97,9 @@ fn test_with_validity() { let expected = PrimitiveArray::from(&[Some(1i32), None, Some(3)]); assert_eq!(arr_ref, &expected); } + +// check that `PartialEq` can be derived +#[derive(PartialEq)] +struct A { + array: Arc, +} diff --git a/tests/it/scalar/mod.rs b/tests/it/scalar/mod.rs index f5fe233dd40..b26c7874b1a 100644 --- a/tests/it/scalar/mod.rs +++ b/tests/it/scalar/mod.rs @@ -1,3 +1,7 @@ +use std::sync::Arc; + +use arrow2::scalar::Scalar; + mod binary; mod boolean; mod list; @@ -5,3 +9,9 @@ mod null; mod primitive; mod struct_; mod utf8; + +// check that `PartialEq` can be derived +#[derive(PartialEq)] +struct A { + array: Arc, +}