@@ -45,31 +45,17 @@ impl Peripheral {
4545#[ cfg( feature = "serde" ) ]
4646mod ser_de {
4747 use super :: * ;
48+ use crate :: { DeserArray , SerArray } ;
4849 use serde:: { Deserialize , Deserializer , Serialize , Serializer } ;
4950
50- #[ derive( serde:: Deserialize , serde:: Serialize ) ]
51- struct PeripheralArray {
52- #[ cfg_attr(
53- feature = "serde" ,
54- serde( flatten, default , skip_serializing_if = "Option::is_none" )
55- ) ]
56- dim : Option < DimElement > ,
57- #[ cfg_attr( feature = "serde" , serde( flatten) ) ]
58- info : PeripheralInfo ,
59- }
60-
6151 impl Serialize for Peripheral {
6252 fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
6353 where
6454 S : Serializer ,
6555 {
6656 match self {
6757 Self :: Single ( info) => info. serialize ( serializer) ,
68- Self :: Array ( info, dim) => PeripheralArray {
69- dim : Some ( dim. clone ( ) ) ,
70- info : info. clone ( ) ,
71- }
72- . serialize ( serializer) ,
58+ Self :: Array ( info, dim) => SerArray { dim, info } . serialize ( serializer) ,
7359 }
7460 }
7561 }
@@ -79,7 +65,7 @@ mod ser_de {
7965 where
8066 D : Deserializer < ' de > ,
8167 {
82- let PeripheralArray { dim, info } = PeripheralArray :: deserialize ( deserializer) ?;
68+ let DeserArray { dim, info } = DeserArray :: < PeripheralInfo > :: deserialize ( deserializer) ?;
8369 if let Some ( dim) = dim {
8470 Ok ( info. array ( dim) )
8571 } else {
0 commit comments