Move Encodable and Decodable trait impls
What changed, and why it matters
This commit simply rearranges the order of code blocks in two files. It moves the implementations of the Encodable and Decodable traits so they appear before the helper encoder/decoder struct definitions, matching a previous cleanup done for BlockHash. No logic, behavior, or security properties are changed.
No security action needed. Treat as a normal refactoring/reordering commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff is a pure code move in primitives/src/hash_types/transaction_merkle_node.rs and primitives/src/hash_types/witness_merkle_node.rs. The Encodable and Decodable trait impls are relocated earlier in the file, while the encoder_newtype_exact! macro invocation and decoder struct definitions move later. The actual types, trait methods, and macro-generated code remain identical. Stats show +20/-20, confirming only relocation.
Changed components
primitives/src/hash_types/transaction_merkle_node.rsprimitives/src/hash_types/witness_merkle_node.rsInspect captured patch +20 / −20
diff --git a/primitives/src/hash_types/transaction_merkle_node.rs b/primitives/src/hash_types/transaction_merkle_node.rs
index 6df8e727..e4b92c50 100644
--- a/primitives/src/hash_types/transaction_merkle_node.rs
+++ b/primitives/src/hash_types/transaction_merkle_node.rs
@@ -50,11 +50,6 @@ impl TxMerkleNode {
}
}
-encoding::encoder_newtype_exact! {
- /// The encoder for the [`TxMerkleNode`] type.
- pub struct TxMerkleNodeEncoder<'e>(encoding::ArrayRefEncoder<'e, 32>);
-}
-
impl encoding::Encodable for TxMerkleNode {
type Encoder<'e> = TxMerkleNodeEncoder<'e>;
fn encoder(&self) -> Self::Encoder<'_> {
@@ -64,6 +59,16 @@ impl encoding::Encodable for TxMerkleNode {
}
}
+impl encoding::Decodable for TxMerkleNode {
+ type Decoder = TxMerkleNodeDecoder;
+ fn decoder() -> Self::Decoder { TxMerkleNodeDecoder(encoding::ArrayDecoder::<32>::new()) }
+}
+
+encoding::encoder_newtype_exact! {
+ /// The encoder for the [`TxMerkleNode`] type.
+ pub struct TxMerkleNodeEncoder<'e>(encoding::ArrayRefEncoder<'e, 32>);
+}
+
/// The decoder for the [`TxMerkleNode`] type.
pub struct TxMerkleNodeDecoder(encoding::ArrayDecoder<32>);
@@ -95,11 +100,6 @@ impl encoding::Decoder for TxMerkleNodeDecoder {
fn read_limit(&self) -> usize { self.0.read_limit() }
}
-impl encoding::Decodable for TxMerkleNode {
- type Decoder = TxMerkleNodeDecoder;
- fn decoder() -> Self::Decoder { TxMerkleNodeDecoder(encoding::ArrayDecoder::<32>::new()) }
-}
-
/// An error consensus decoding an `TxMerkleNode`.
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct TxMerkleNodeDecoderError(encoding::UnexpectedEofError);
diff --git a/primitives/src/hash_types/witness_merkle_node.rs b/primitives/src/hash_types/witness_merkle_node.rs
index 78b4b253..952fba8a 100644
--- a/primitives/src/hash_types/witness_merkle_node.rs
+++ b/primitives/src/hash_types/witness_merkle_node.rs
@@ -50,11 +50,6 @@ impl WitnessMerkleNode {
}
}
-encoding::encoder_newtype_exact! {
- /// The encoder for the [`WitnessMerkleNode`] type.
- pub struct WitnessMerkleNodeEncoder<'e>(encoding::ArrayRefEncoder<'e, 32>);
-}
-
impl encoding::Encodable for WitnessMerkleNode {
type Encoder<'e> = WitnessMerkleNodeEncoder<'e>;
fn encoder(&self) -> Self::Encoder<'_> {
@@ -64,6 +59,16 @@ impl encoding::Encodable for WitnessMerkleNode {
}
}
+impl encoding::Decodable for WitnessMerkleNode {
+ type Decoder = WitnessMerkleNodeDecoder;
+ fn decoder() -> Self::Decoder { WitnessMerkleNodeDecoder(encoding::ArrayDecoder::<32>::new()) }
+}
+
+encoding::encoder_newtype_exact! {
+ /// The encoder for the [`WitnessMerkleNode`] type.
+ pub struct WitnessMerkleNodeEncoder<'e>(encoding::ArrayRefEncoder<'e, 32>);
+}
+
/// The decoder for the [`WitnessMerkleNode`] type.
pub struct WitnessMerkleNodeDecoder(encoding::ArrayDecoder<32>);
@@ -95,11 +100,6 @@ impl encoding::Decoder for WitnessMerkleNodeDecoder {
fn read_limit(&self) -> usize { self.0.read_limit() }
}
-impl encoding::Decodable for WitnessMerkleNode {
- type Decoder = WitnessMerkleNodeDecoder;
- fn decoder() -> Self::Decoder { WitnessMerkleNodeDecoder(encoding::ArrayDecoder::<32>::new()) }
-}
-
/// An error consensus decoding an `WitnessMerkleNode`.
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct WitnessMerkleNodeDecoderError(encoding::UnexpectedEofError);
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.