@@ -95,50 +95,20 @@ impl From<Ena> for u64 {
9595) ]
9696#[ repr( transparent) ]
9797#[ cfg_attr( any( feature = "debug-impls" , test) , derive( Debug ) ) ]
98+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
99+ #[ cfg_attr( feature = "serde" , serde( from = "u128" , into = "u128" ) ) ]
98100pub struct RestartId ( pub le:: U128 ) ;
99101
100- // Unfortunately, `zerocopy::le::U128` doesn't implement serde traits. Use a
101- // small decoy type to paper over the differences, without pulling in the
102- // `serde_with` or `serde_as` crates.
103- mod serde_jig {
104- use hubpack:: SerializedSize ;
105- use serde:: { Deserialize , Serialize } ;
106-
107- #[ derive( Serialize , Deserialize , SerializedSize ) ]
108- pub ( crate ) struct RestartId ( pub ( crate ) u128 ) ;
109-
110- impl Serialize for super :: RestartId {
111- #[ inline]
112- fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
113- where
114- S : serde:: Serializer ,
115- {
116- let jig = RestartId ( self . into_u128 ( ) ) ;
117- jig. serialize ( serializer)
118- }
119- }
120-
121- impl < ' d > Deserialize < ' d > for super :: RestartId {
122- #[ inline]
123- fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error >
124- where
125- D : serde:: Deserializer < ' d > ,
126- {
127- let jig = RestartId :: deserialize ( deserializer) ?;
128- Ok ( super :: RestartId :: new ( jig. 0 ) )
129- }
130- }
131-
132- impl SerializedSize for super :: RestartId {
133- const MAX_SIZE : usize = const {
134- assert ! (
135- core:: mem:: size_of:: <super :: RestartId >( )
136- == core:: mem:: size_of:: <RestartId >( ) ,
137- "RestartId changed!" ,
138- ) ;
139- <RestartId as SerializedSize >:: MAX_SIZE
140- } ;
141- }
102+ // Unfortunately, `zerocopy::le::U128` doesn't implement hubpack traits.
103+ #[ cfg( feature = "hubpack" ) ]
104+ impl hubpack:: SerializedSize for RestartId {
105+ const MAX_SIZE : usize = const {
106+ assert ! (
107+ core:: mem:: size_of:: <RestartId >( ) == core:: mem:: size_of:: <u128 >( ) ,
108+ "RestartId changed!" ,
109+ ) ;
110+ <u128 as hubpack:: SerializedSize >:: MAX_SIZE
111+ } ;
142112}
143113
144114impl RestartId {
0 commit comments