1
1
use serde:: { Deserialize , Serialize } ;
2
2
use serde_with:: serde_as;
3
3
4
+ use crate :: serde:: unsigned_field_element:: UfeHex ;
4
5
use starknet_types_core:: felt:: Felt ;
5
6
6
7
/// A more idiomatic way to access `execution_status` and `revert_reason`.
@@ -48,21 +49,22 @@ impl ReceiptBlock {
48
49
}
49
50
}
50
51
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
+
51
63
impl Serialize for ReceiptBlock {
52
64
fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
53
65
where
54
66
S : serde:: Serializer ,
55
67
{
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
-
66
68
let raw = match self {
67
69
Self :: Pending => Raw {
68
70
block_hash : None ,
@@ -72,8 +74,8 @@ impl Serialize for ReceiptBlock {
72
74
block_hash,
73
75
block_number,
74
76
} => 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) ,
77
79
} ,
78
80
} ;
79
81
@@ -86,17 +88,6 @@ impl<'de> Deserialize<'de> for ReceiptBlock {
86
88
where
87
89
D : serde:: Deserializer < ' de > ,
88
90
{
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
-
100
91
let raw = Raw :: deserialize ( deserializer) ?;
101
92
102
93
match ( raw. block_hash , raw. block_number ) {
0 commit comments