From ac0319c670fa39df233dc3a8dab4eb9ff59fbd4d Mon Sep 17 00:00:00 2001 From: Arsenii Kulikov Date: Mon, 11 Nov 2024 16:33:20 +0400 Subject: [PATCH] feat: add `AsRef` impl and `hash` method to `Sealed` (#804) feat: add as_ref and hash to Sealed --- crates/primitives/src/sealed.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/primitives/src/sealed.rs b/crates/primitives/src/sealed.rs index 22859ac2b..fdabe7714 100644 --- a/crates/primitives/src/sealed.rs +++ b/crates/primitives/src/sealed.rs @@ -1,15 +1,16 @@ use crate::B256; -use derive_more::Deref; +use derive_more::{AsRef, Deref}; /// A consensus hashable item, with its memoized hash. /// /// We do not implement any specific hashing algorithm here. Instead types /// implement the [`Sealable`] trait to provide define their own hash. -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Deref)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, AsRef, Deref)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr(feature = "arbitrary", derive(proptest_derive::Arbitrary))] pub struct Sealed { /// The inner item. + #[as_ref] #[deref] #[cfg_attr(feature = "serde", serde(flatten))] inner: T, @@ -86,6 +87,12 @@ impl Sealed { self.seal } + /// Get the hash. + #[inline(always)] + pub const fn hash(&self) -> B256 { + self.seal + } + /// Unseal the inner item, discarding the hash. #[inline(always)] #[allow(clippy::missing_const_for_fn)] // false positive