From 98a90e1766d03d810caf3641cb8e850b57862e1e Mon Sep 17 00:00:00 2001 From: David Senk Date: Sat, 14 Jun 2025 20:36:40 -0400 Subject: [PATCH] converted to trait --- src/hashes.rs | 9 +++++---- src/hashes/null_hash.rs | 12 ++++++------ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/hashes.rs b/src/hashes.rs index 84b059d..dce5a37 100644 --- a/src/hashes.rs +++ b/src/hashes.rs @@ -22,7 +22,7 @@ fn arc_u8_empty() -> ArcU8 { } #[derive(Debug, PartialEq)] -enum HashReturn { +pub enum HashReturn { CRC32(BITS32), SHA256(BITS256), SHA3_256(BITS256), @@ -44,9 +44,10 @@ impl HashReturn { } } -enum HashOp { - Digest(ArcU8), - Complete, +pub trait Hasher { + fn new() -> Self; + fn digest(&mut self, bytes: ArcU8); + fn complete(self) -> HashReturn; } struct HashKeeper {} diff --git a/src/hashes/null_hash.rs b/src/hashes/null_hash.rs index cb3360f..fdb61a7 100644 --- a/src/hashes/null_hash.rs +++ b/src/hashes/null_hash.rs @@ -18,11 +18,11 @@ pub struct NullHash { hash: BITS256, } -impl NullHash { - pub fn new() -> Self { +impl Hasher for NullHash { + fn new() -> Self { NullHash { hash: [0; 32] } } - pub fn digest(&mut self, bytes: impl AsRef<[u8]>) { + fn digest(&mut self, bytes: ArcU8) { let bytes = bytes.as_ref(); let start_point = if bytes.len() < 32 { @@ -37,7 +37,7 @@ impl NullHash { *loc = *byte; } } - pub fn complete(self) -> HashReturn { + fn complete(self) -> HashReturn { HashReturn::RAW(Arc::new(self.hash)) } } @@ -50,7 +50,7 @@ mod test { let mut hasher = NullHash::new(); for i in 0..32u8 { - hasher.digest([i; 1]); + hasher.digest(Arc::new([i; 1])); } assert_eq!(*hasher.complete().into_bytes().first().unwrap(), 31); @@ -66,7 +66,7 @@ mod test { *byte = i; } - hasher.digest(source_bytes); + hasher.digest(Arc::new(source_bytes)); let result = hasher.complete().into_bytes();