Skip to content

Commit 36ec1d6

Browse files
authored
fix: serialization ReceiptBlock (#604)
1 parent 4dbc169 commit 36ec1d6

File tree

1 file changed

+14
-23
lines changed

1 file changed

+14
-23
lines changed

starknet-core/src/types/receipt_block.rs

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use serde::{Deserialize, Serialize};
22
use serde_with::serde_as;
33

4+
use crate::serde::unsigned_field_element::UfeHex;
45
use starknet_types_core::felt::Felt;
56

67
/// A more idiomatic way to access `execution_status` and `revert_reason`.
@@ -48,21 +49,22 @@ impl ReceiptBlock {
4849
}
4950
}
5051

52+
#[serde_as]
53+
#[derive(Serialize, Deserialize)]
54+
#[cfg_attr(feature = "no_unknown_fields", serde(deny_unknown_fields))]
55+
struct Raw {
56+
#[serde(skip_serializing_if = "Option::is_none")]
57+
#[serde_as(as = "Option<UfeHex>")]
58+
block_hash: Option<Felt>,
59+
#[serde(skip_serializing_if = "Option::is_none")]
60+
block_number: Option<u64>,
61+
}
62+
5163
impl Serialize for ReceiptBlock {
5264
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
5365
where
5466
S: serde::Serializer,
5567
{
56-
#[derive(Serialize)]
57-
#[serde_as]
58-
struct Raw<'a> {
59-
#[serde_as(as = "Option<UfeHex>")]
60-
#[serde(skip_serializing_if = "Option::is_none")]
61-
block_hash: Option<&'a Felt>,
62-
#[serde(skip_serializing_if = "Option::is_none")]
63-
block_number: Option<&'a u64>,
64-
}
65-
6668
let raw = match self {
6769
Self::Pending => Raw {
6870
block_hash: None,
@@ -72,8 +74,8 @@ impl Serialize for ReceiptBlock {
7274
block_hash,
7375
block_number,
7476
} => Raw {
75-
block_hash: Some(block_hash),
76-
block_number: Some(block_number),
77+
block_hash: Some(*block_hash),
78+
block_number: Some(*block_number),
7779
},
7880
};
7981

@@ -86,17 +88,6 @@ impl<'de> Deserialize<'de> for ReceiptBlock {
8688
where
8789
D: serde::Deserializer<'de>,
8890
{
89-
#[derive(Deserialize)]
90-
#[serde_as]
91-
#[cfg_attr(feature = "no_unknown_fields", serde(deny_unknown_fields))]
92-
struct Raw {
93-
#[serde_as(as = "Option<UfeHex>")]
94-
#[serde(skip_serializing_if = "Option::is_none")]
95-
block_hash: Option<Felt>,
96-
#[serde(skip_serializing_if = "Option::is_none")]
97-
block_number: Option<u64>,
98-
}
99-
10091
let raw = Raw::deserialize(deserializer)?;
10192

10293
match (raw.block_hash, raw.block_number) {

0 commit comments

Comments
 (0)