diff --git a/crates/evm/execution-types/src/chain.rs b/crates/evm/execution-types/src/chain.rs index bc625abcfa6a..aa53c7276b76 100644 --- a/crates/evm/execution-types/src/chain.rs +++ b/crates/evm/execution-types/src/chain.rs @@ -557,22 +557,25 @@ pub(super) mod serde_bincode_compat { #[derive(Debug, Serialize, Deserialize)] pub struct Chain<'a, N = EthPrimitives> where - N: NodePrimitives>, + N: NodePrimitives< + Block: Block + 'static, + >, { - blocks: SealedBlocksWithSenders<'a, N::Block>, + blocks: RecoveredB<'a, N::Block>, execution_outcome: Cow<'a, ExecutionOutcome>, trie_updates: Option>, } #[derive(Debug)] - struct SealedBlocksWithSenders< + struct RecoveredB< 'a, - B: reth_primitives_traits::Block, + B: reth_primitives_traits::Block + + 'static, >(Cow<'a, BTreeMap>>); - impl Serialize for SealedBlocksWithSenders<'_, B> + impl Serialize for RecoveredB<'_, B> where - B: Block, + B: Block + 'static, { fn serialize(&self, serializer: S) -> Result where @@ -588,9 +591,9 @@ pub(super) mod serde_bincode_compat { } } - impl<'de, B> Deserialize<'de> for SealedBlocksWithSenders<'_, B> + impl<'de, B> Deserialize<'de> for RecoveredB<'_, B> where - B: Block, + B: Block + 'static, { fn deserialize(deserializer: D) -> Result where @@ -605,11 +608,13 @@ pub(super) mod serde_bincode_compat { impl<'a, N> From<&'a super::Chain> for Chain<'a, N> where - N: NodePrimitives>, + N: NodePrimitives< + Block: Block + 'static, + >, { fn from(value: &'a super::Chain) -> Self { Self { - blocks: SealedBlocksWithSenders(Cow::Borrowed(&value.blocks)), + blocks: RecoveredB(Cow::Borrowed(&value.blocks)), execution_outcome: Cow::Borrowed(&value.execution_outcome), trie_updates: value.trie_updates.as_ref().map(Into::into), } @@ -618,7 +623,9 @@ pub(super) mod serde_bincode_compat { impl<'a, N> From> for super::Chain where - N: NodePrimitives>, + N: NodePrimitives< + Block: Block + 'static, + >, { fn from(value: Chain<'a, N>) -> Self { Self { @@ -631,7 +638,9 @@ pub(super) mod serde_bincode_compat { impl SerializeAs> for Chain<'_, N> where - N: NodePrimitives>, + N: NodePrimitives< + Block: Block + 'static, + >, { fn serialize_as(source: &super::Chain, serializer: S) -> Result where @@ -643,7 +652,9 @@ pub(super) mod serde_bincode_compat { impl<'de, N> DeserializeAs<'de, super::Chain> for Chain<'de, N> where - N: NodePrimitives>, + N: NodePrimitives< + Block: Block + 'static, + >, { fn deserialize_as(deserializer: D) -> Result, D::Error> where diff --git a/crates/net/downloaders/src/bodies/bodies.rs b/crates/net/downloaders/src/bodies/bodies.rs index 52164731c3a5..93efd6dd93e2 100644 --- a/crates/net/downloaders/src/bodies/bodies.rs +++ b/crates/net/downloaders/src/bodies/bodies.rs @@ -285,7 +285,7 @@ where impl BodiesDownloader where - B: Block, + B: Block + 'static, C: BodiesClient + 'static, Provider: HeaderProvider
+ Unpin + 'static, { @@ -305,7 +305,7 @@ where impl BodyDownloader for BodiesDownloader where - B: Block, + B: Block + 'static, C: BodiesClient + 'static, Provider: HeaderProvider
+ Unpin + 'static, { @@ -356,7 +356,7 @@ where impl Stream for BodiesDownloader where - B: Block, + B: Block + 'static, C: BodiesClient + 'static, Provider: HeaderProvider
+ Unpin + 'static, { diff --git a/crates/net/downloaders/src/bodies/noop.rs b/crates/net/downloaders/src/bodies/noop.rs index e104c36d09e2..bd4e9d9b9ed5 100644 --- a/crates/net/downloaders/src/bodies/noop.rs +++ b/crates/net/downloaders/src/bodies/noop.rs @@ -14,7 +14,7 @@ pub struct NoopBodiesDownloader { _block: std::marker::PhantomData, } -impl BodyDownloader for NoopBodiesDownloader { +impl BodyDownloader for NoopBodiesDownloader { type Block = B; fn set_download_range(&mut self, _: RangeInclusive) -> DownloadResult<()> { @@ -22,7 +22,7 @@ impl BodyDownloader for NoopBodiesDownloader { } } -impl Stream for NoopBodiesDownloader { +impl Stream for NoopBodiesDownloader { type Item = Result>, DownloadError>; fn poll_next( diff --git a/crates/net/downloaders/src/bodies/task.rs b/crates/net/downloaders/src/bodies/task.rs index 9b1f68381bbd..d3093aec49c2 100644 --- a/crates/net/downloaders/src/bodies/task.rs +++ b/crates/net/downloaders/src/bodies/task.rs @@ -50,7 +50,7 @@ impl TaskDownloader { /// use std::{fmt::Debug, sync::Arc}; /// /// fn t< - /// B: Block, + /// B: Block + 'static, /// C: BodiesClient + 'static, /// Provider: HeaderProvider
+ Unpin + 'static, /// >( @@ -92,7 +92,7 @@ impl TaskDownloader { } } -impl BodyDownloader for TaskDownloader { +impl BodyDownloader for TaskDownloader { type Block = B; fn set_download_range(&mut self, range: RangeInclusive) -> DownloadResult<()> { @@ -101,7 +101,7 @@ impl BodyDownloader for TaskDownloader { } } -impl Stream for TaskDownloader { +impl Stream for TaskDownloader { type Item = BodyDownloaderResult; fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { diff --git a/crates/primitives-traits/src/block/mod.rs b/crates/primitives-traits/src/block/mod.rs index 61a895c054fd..ecbd7ae25513 100644 --- a/crates/primitives-traits/src/block/mod.rs +++ b/crates/primitives-traits/src/block/mod.rs @@ -62,7 +62,6 @@ pub trait Block: + MaybeSerde + Encodable + Decodable - + 'static { /// Header part of the block. type Header: BlockHeader; diff --git a/crates/primitives-traits/src/block/recovered.rs b/crates/primitives-traits/src/block/recovered.rs index be401f915b47..83c1f47c904a 100644 --- a/crates/primitives-traits/src/block/recovered.rs +++ b/crates/primitives-traits/src/block/recovered.rs @@ -526,13 +526,16 @@ pub(super) mod serde_bincode_compat { /// /// #[serde_as] /// #[derive(Serialize, Deserialize)] - /// struct Data> { + /// struct Data + 'static> { /// #[serde_as(as = "serde_bincode_compat::RecoveredBlock<'_, T>")] /// block: RecoveredBlock, /// } /// ``` #[derive(derive_more::Debug, Serialize, Deserialize)] - pub struct RecoveredBlock<'a, T: Block> { + pub struct RecoveredBlock< + 'a, + T: Block + 'static, + > { #[serde( bound = "serde_bincode_compat::SealedBlock<'a, T>: Serialize + serde::de::DeserializeOwned" )] @@ -540,7 +543,7 @@ pub(super) mod serde_bincode_compat { senders: Cow<'a, Vec
>, } - impl<'a, T: Block> + impl<'a, T: Block + 'static> From<&'a super::RecoveredBlock> for RecoveredBlock<'a, T> { fn from(value: &'a super::RecoveredBlock) -> Self { @@ -548,7 +551,7 @@ pub(super) mod serde_bincode_compat { } } - impl<'a, T: Block> + impl<'a, T: Block + 'static> From> for super::RecoveredBlock { fn from(value: RecoveredBlock<'a, T>) -> Self { @@ -556,7 +559,7 @@ pub(super) mod serde_bincode_compat { } } - impl> + impl + 'static> SerializeAs> for RecoveredBlock<'_, T> { fn serialize_as( @@ -570,7 +573,7 @@ pub(super) mod serde_bincode_compat { } } - impl<'de, T: Block> + impl<'de, T: Block + 'static> DeserializeAs<'de, super::RecoveredBlock> for RecoveredBlock<'de, T> { fn deserialize_as(deserializer: D) -> Result, D::Error> @@ -581,8 +584,8 @@ pub(super) mod serde_bincode_compat { } } - impl> SerdeBincodeCompat - for super::RecoveredBlock + impl + 'static> + SerdeBincodeCompat for super::RecoveredBlock { type BincodeRepr<'a> = RecoveredBlock<'a, T>; } diff --git a/crates/primitives-traits/src/block/sealed.rs b/crates/primitives-traits/src/block/sealed.rs index 8c80b58fd8b6..0400f0fe15c7 100644 --- a/crates/primitives-traits/src/block/sealed.rs +++ b/crates/primitives-traits/src/block/sealed.rs @@ -380,14 +380,17 @@ pub(super) mod serde_bincode_compat { /// /// #[serde_as] /// #[derive(Serialize, Deserialize)] - /// struct Data> { + /// struct Data + 'static> { /// #[serde_as(as = "serde_bincode_compat::SealedBlock<'_, T>")] /// block: SealedBlock, /// } /// ``` #[serde_as] #[derive(derive_more::Debug, Serialize, Deserialize)] - pub struct SealedBlock<'a, T: Block> { + pub struct SealedBlock< + 'a, + T: Block + 'static, + > { #[serde( bound = "serde_bincode_compat::SealedHeader<'a, T::Header>: Serialize + serde::de::DeserializeOwned" )] @@ -395,7 +398,7 @@ pub(super) mod serde_bincode_compat { body: BincodeReprFor<'a, T::Body>, } - impl<'a, T: Block> + impl<'a, T: Block + 'static> From<&'a super::SealedBlock> for SealedBlock<'a, T> { fn from(value: &'a super::SealedBlock) -> Self { @@ -403,7 +406,7 @@ pub(super) mod serde_bincode_compat { } } - impl<'a, T: Block> + impl<'a, T: Block + 'static> From> for super::SealedBlock { fn from(value: SealedBlock<'a, T>) -> Self { @@ -411,7 +414,7 @@ pub(super) mod serde_bincode_compat { } } - impl> + impl + 'static> SerializeAs> for SealedBlock<'_, T> { fn serialize_as(source: &super::SealedBlock, serializer: S) -> Result @@ -422,7 +425,7 @@ pub(super) mod serde_bincode_compat { } } - impl<'de, T: Block> + impl<'de, T: Block + 'static> DeserializeAs<'de, super::SealedBlock> for SealedBlock<'de, T> { fn deserialize_as(deserializer: D) -> Result, D::Error> @@ -433,8 +436,8 @@ pub(super) mod serde_bincode_compat { } } - impl> SerdeBincodeCompat - for super::SealedBlock + impl + 'static> + SerdeBincodeCompat for super::SealedBlock { type BincodeRepr<'a> = SealedBlock<'a, T>; } diff --git a/crates/primitives-traits/src/header/sealed.rs b/crates/primitives-traits/src/header/sealed.rs index 3cd18816650a..10ca753bdf6e 100644 --- a/crates/primitives-traits/src/header/sealed.rs +++ b/crates/primitives-traits/src/header/sealed.rs @@ -60,7 +60,7 @@ impl SealedHeader { self.header } - /// Converts from &`SealedHeader` to `SealedHeader`<&H>. + /// Converts from &`SealedHeader` to `SealedHeader<&H>`. pub fn sealed_ref(&self) -> SealedHeader<&H> { SealedHeader { hash: self.hash.clone(), header: &self.header } }