@@ -45,31 +45,17 @@ impl Peripheral {
45
45
#[ cfg( feature = "serde" ) ]
46
46
mod ser_de {
47
47
use super :: * ;
48
+ use crate :: { DeserArray , SerArray } ;
48
49
use serde:: { Deserialize , Deserializer , Serialize , Serializer } ;
49
50
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
-
61
51
impl Serialize for Peripheral {
62
52
fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
63
53
where
64
54
S : Serializer ,
65
55
{
66
56
match self {
67
57
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) ,
73
59
}
74
60
}
75
61
}
@@ -79,7 +65,7 @@ mod ser_de {
79
65
where
80
66
D : Deserializer < ' de > ,
81
67
{
82
- let PeripheralArray { dim, info } = PeripheralArray :: deserialize ( deserializer) ?;
68
+ let DeserArray { dim, info } = DeserArray :: < PeripheralInfo > :: deserialize ( deserializer) ?;
83
69
if let Some ( dim) = dim {
84
70
Ok ( info. array ( dim) )
85
71
} else {
0 commit comments