From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- vendor/chalk-engine/src/derived.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 vendor/chalk-engine/src/derived.rs (limited to 'vendor/chalk-engine/src/derived.rs') diff --git a/vendor/chalk-engine/src/derived.rs b/vendor/chalk-engine/src/derived.rs new file mode 100644 index 000000000..b3cdc3d0d --- /dev/null +++ b/vendor/chalk-engine/src/derived.rs @@ -0,0 +1,34 @@ +// These impls for PartialEq, Eq, etc are written by hand. This is +// because the `#[derive()]` would add requirements onto the context +// object that are not needed. + +use super::*; +use std::cmp::{Eq, PartialEq}; +use std::hash::{Hash, Hasher}; +use std::mem; + +/////////////////////////////////////////////////////////////////////////// + +impl PartialEq for Literal { + fn eq(&self, other: &Literal) -> bool { + match (self, other) { + (Literal::Positive(goal1), Literal::Positive(goal2)) + | (Literal::Negative(goal1), Literal::Negative(goal2)) => goal1 == goal2, + + _ => false, + } + } +} + +impl Eq for Literal {} + +impl Hash for Literal { + fn hash(&self, state: &mut H) { + mem::discriminant(self).hash(state); + match self { + Literal::Positive(goal) | Literal::Negative(goal) => { + goal.hash(state); + } + } + } +} -- cgit v1.2.3