@@ -170,16 +170,17 @@ impl serde::ser::SerializeMap for SerializeInlineTable {
170170 where
171171 T : serde:: ser:: Serialize + ?Sized ,
172172 {
173- let mut value_serializer = MapValueSerializer :: new ( ) ;
174- let res = value. serialize ( & mut value_serializer) ;
173+ let mut is_none = false ;
174+ let value_serializer = MapValueSerializer :: new ( & mut is_none) ;
175+ let res = value. serialize ( value_serializer) ;
175176 match res {
176177 Ok ( item) => {
177178 let key = self . key . take ( ) . unwrap ( ) ;
178179 let item = crate :: Item :: Value ( item) ;
179180 self . items . insert ( key, item) ;
180181 }
181182 Err ( e) => {
182- if !( e == Error :: unsupported_none ( ) && value_serializer . is_none ) {
183+ if !( e == Error :: unsupported_none ( ) && is_none) {
183184 return Err ( e) ;
184185 }
185186 }
@@ -200,15 +201,16 @@ impl serde::ser::SerializeStruct for SerializeInlineTable {
200201 where
201202 T : serde:: ser:: Serialize + ?Sized ,
202203 {
203- let mut value_serializer = MapValueSerializer :: new ( ) ;
204- let res = value. serialize ( & mut value_serializer) ;
204+ let mut is_none = false ;
205+ let value_serializer = MapValueSerializer :: new ( & mut is_none) ;
206+ let res = value. serialize ( value_serializer) ;
205207 match res {
206208 Ok ( item) => {
207209 let item = crate :: Item :: Value ( item) ;
208210 self . items . insert ( crate :: Key :: new ( key) , item) ;
209211 }
210212 Err ( e) => {
211- if !( e == Error :: unsupported_none ( ) && value_serializer . is_none ) {
213+ if !( e == Error :: unsupported_none ( ) && is_none) {
212214 return Err ( e) ;
213215 }
214216 }
@@ -392,17 +394,17 @@ impl serde::ser::Serializer for DatetimeFieldSerializer {
392394 }
393395}
394396
395- struct MapValueSerializer {
396- is_none : bool ,
397+ struct MapValueSerializer < ' d > {
398+ is_none : & ' d mut bool ,
397399}
398400
399- impl MapValueSerializer {
400- fn new ( ) -> Self {
401- Self { is_none : false }
401+ impl < ' d > MapValueSerializer < ' d > {
402+ fn new ( is_none : & ' d mut bool ) -> Self {
403+ Self { is_none }
402404 }
403405}
404406
405- impl serde:: ser:: Serializer for & mut MapValueSerializer {
407+ impl serde:: ser:: Serializer for MapValueSerializer < ' _ > {
406408 type Ok = crate :: Value ;
407409 type Error = Error ;
408410 type SerializeSeq = SerializeValueArray ;
@@ -470,7 +472,7 @@ impl serde::ser::Serializer for &mut MapValueSerializer {
470472 }
471473
472474 fn serialize_none ( self ) -> Result < Self :: Ok , Self :: Error > {
473- self . is_none = true ;
475+ * self . is_none = true ;
474476 Err ( Error :: unsupported_none ( ) )
475477 }
476478
0 commit comments