From 9086660ec069608002439c76a54c92f78355c7d7 Mon Sep 17 00:00:00 2001 From: Tpt Date: Sat, 4 Mar 2023 18:13:35 +0100 Subject: [PATCH] QuerySolution: implements Eq and Debug --- lib/sparesults/src/solution.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lib/sparesults/src/solution.rs b/lib/sparesults/src/solution.rs index 0d7adeff..66b74da2 100644 --- a/lib/sparesults/src/solution.rs +++ b/lib/sparesults/src/solution.rs @@ -1,6 +1,7 @@ //! Definition of [`QuerySolution`] structure and associated utility constructions. use oxrdf::{Term, Variable, VariableRef}; +use std::fmt; use std::iter::Zip; use std::ops::Index; use std::rc::Rc; @@ -183,6 +184,30 @@ impl Index<&Variable> for QuerySolution { } } +impl PartialEq for QuerySolution { + fn eq(&self, other: &Self) -> bool { + for (k, v) in self.iter() { + if other.get(k) != Some(v) { + return false; + } + } + for (k, v) in other.iter() { + if self.get(k) != Some(v) { + return false; + } + } + true + } +} + +impl Eq for QuerySolution {} + +impl fmt::Debug for QuerySolution { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_map().entries(self.iter()).finish() + } +} + /// An iterator over [`QuerySolution`] bound variables. /// /// ```