From 9918726fb968022d5678dd5f3afdf8e69227bf87 Mon Sep 17 00:00:00 2001 From: "Jorge C. Leitao" Date: Mon, 13 Dec 2021 16:19:13 +0000 Subject: [PATCH] Made dyn Array and Scalar PartialEq --- src/array/equal/mod.rs | 18 +++++++++++++++--- src/scalar/equal.rs | 20 +++++++++++++++++--- tests/it/array/mod.rs | 6 ++++++ tests/it/scalar/mod.rs | 6 ++++++ 4 files changed, 44 insertions(+), 6 deletions(-) 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..4f7d0360096 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: std::sync::Arc, +} diff --git a/tests/it/scalar/mod.rs b/tests/it/scalar/mod.rs index f5fe233dd40..64a35e0edb4 100644 --- a/tests/it/scalar/mod.rs +++ b/tests/it/scalar/mod.rs @@ -5,3 +5,9 @@ mod null; mod primitive; mod struct_; mod utf8; + +// check that `PartialEq` can be derived +#[derive(PartialEq)] +struct A { + array: std::sync::Arc, +}