From 6ea7d0f74a5c64b06639aed095539b116894798d Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Fri, 27 Sep 2024 16:46:24 +1000 Subject: [PATCH] TreeHashMut --- tree_hash/src/lib.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tree_hash/src/lib.rs b/tree_hash/src/lib.rs index 18567e4..1ab1496 100644 --- a/tree_hash/src/lib.rs +++ b/tree_hash/src/lib.rs @@ -119,6 +119,16 @@ pub trait TreeHash { fn tree_hash_root(&self) -> Hash256; } +pub trait TreeHashMut { + fn tree_hash_type_mut() -> TreeHashType; + + fn tree_hash_packed_encoding_mut(&self) -> PackedEncoding; + + fn tree_hash_packing_factor_mut() -> usize; + + fn tree_hash_root_mut(&mut self) -> Hash256; +} + /// Punch through references. impl<'a, T> TreeHash for &'a T where @@ -141,6 +151,27 @@ where } } +impl TreeHashMut for T +where + T: TreeHash, +{ + fn tree_hash_type_mut() -> TreeHashType { + ::tree_hash_type() + } + + fn tree_hash_packed_encoding_mut(&self) -> PackedEncoding { + ::tree_hash_packed_encoding(self) + } + + fn tree_hash_packing_factor_mut() -> usize { + ::tree_hash_packing_factor() + } + + fn tree_hash_root_mut(&mut self) -> Hash256 { + ::tree_hash_root(self) + } +} + #[macro_export] macro_rules! tree_hash_ssz_encoding_as_vector { ($type: ident) => {