From 71d5eadbc5ebe366da3af11dd8a010f55a83fd05 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Wed, 22 Oct 2025 14:59:43 +0800 Subject: refactor(hashchain): hash item with the original &(a, b) form instead of (&a, &b) --- src/hash_chain.rs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/hash_chain.rs b/src/hash_chain.rs index 9beb60b..0fe2c1d 100644 --- a/src/hash_chain.rs +++ b/src/hash_chain.rs @@ -63,10 +63,7 @@ impl HashChain { .iter() .enumerate() .all(|(prev_hash, (pred_prev_hash, _))| { - let prev_hash = Self::hash_item({ - let prev_hash = &self.data[prev_hash - 1]; - (&prev_hash.0, &prev_hash.1) - }); + let prev_hash = Self::hash_o_item(&self.data[prev_hash - 1]); prev_hash == *pred_prev_hash }) } @@ -81,12 +78,7 @@ impl HashChain { let prev_hashes: Vec<_> = (pos..self .data .len()) - .map(|i| { - Self::hash_item({ - let prev_hash = &self.data[i - 1]; - (&prev_hash.0, &prev_hash.1) - }) - }) + .map(|i| Self::hash_o_item(&self.data[i - 1])) .collect(); self.data[pos..] @@ -100,13 +92,17 @@ impl HashChain { }); } - fn hash_item(data: (&Vec, &T)) -> Vec { + pub fn hash_item(data: (&Vec, &T)) -> Vec { let mut hasher = Sha256::new(); hasher.update(bincode::encode_to_vec(data, bincode::config::standard()).unwrap()); hasher .finalize() .to_vec() } + + pub fn hash_o_item(data: &(Vec, T)) -> Vec { + Self::hash_item((&data.0, &data.1)) + } } impl Deref for HashChain { -- cgit v1.2.3