From 6ceac4a91e3ffbd96bf046f2ea2ae455f8ec6f37 Mon Sep 17 00:00:00 2001 From: "Andrew Phillips (aider)" Date: Mon, 12 May 2025 19:38:46 -0300 Subject: [PATCH] fix: resolve trait implementation errors and fix hasher move in finalize --- src/digest_engine/sha2.rs | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/digest_engine/sha2.rs b/src/digest_engine/sha2.rs index 0aa7259..e430cc4 100644 --- a/src/digest_engine/sha2.rs +++ b/src/digest_engine/sha2.rs @@ -1,7 +1,7 @@ use std::io; use sha2::{Digest, Sha256}; -#[derive(Debug, Eq, PartialEq, Clone, Default)] +#[derive(Debug, Clone, Default)] pub struct DigestEngineSha256 { hasher: Sha256, } @@ -10,10 +10,28 @@ impl DigestEngineSha256 { pub fn new() -> DigestEngineSha256 { DigestEngineSha256 { hasher: Sha256::new() } } + + // Manual implementation of PartialEq + fn eq(&self, other: &Self) -> bool { + self.hasher.result().as_slice() == other.hasher.result().as_slice() + } + + // Manual implementation of Eq + fn is_eq(&self) -> bool { + true + } } use crate::digest_engine::DigestEngine; +impl PartialEq for DigestEngineSha256 { + fn eq(&self, other: &Self) -> bool { + self.eq(other) + } +} + +impl Eq for DigestEngineSha256 {} + impl DigestEngine for DigestEngineSha256 { fn create(&self) -> Box { Box::new(Self::new()) @@ -25,7 +43,7 @@ impl DigestEngine for DigestEngineSha256 { } fn finalize(&mut self) -> io::Result { - let result = self.hasher.finalize(); + let result = self.hasher.clone().finalize(); Ok(format!("{:x}", result)) } }