diff --git a/arrow-buffer/src/buffer/scalar.rs b/arrow-buffer/src/buffer/scalar.rs index 94dd7bcfc22e..36ee15718b46 100644 --- a/arrow-buffer/src/buffer/scalar.rs +++ b/arrow-buffer/src/buffer/scalar.rs @@ -221,6 +221,9 @@ impl PartialEq> for Vec { } } +/// If T implements Eq, then so does ScalarBuffer. +impl Eq for ScalarBuffer {} + #[cfg(test)] mod tests { use std::{ptr::NonNull, sync::Arc}; @@ -342,4 +345,19 @@ mod tests { assert_eq!(vec, input.as_slice()); assert_ne!(vec.as_ptr(), input.as_ptr()); } + + #[test] + fn scalar_buffer_impl_eq() { + fn are_equal(a: &T, b: &T) -> bool { + a.eq(b) + } + + assert!( + are_equal( + &ScalarBuffer::::from(vec![23]), + &ScalarBuffer::::from(vec![23]) + ), + "ScalarBuffer should implement Eq if the inner type does" + ); + } }