Skip to content

Commit a025b84

Browse files
committed
refactor(edit): Change ser none tracking to mut field
1 parent 54666ad commit a025b84

1 file changed

Lines changed: 15 additions & 13 deletions

File tree

  • crates/toml_edit/src/ser

crates/toml_edit/src/ser/map.rs

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)