Skip to content

Commit

Permalink
Merge pull request #614 from jmfiaschi/map-serialize-entry
Browse files Browse the repository at this point in the history
replace serialize key,value functions by serialize_entry
  • Loading branch information
dtolnay committed Feb 2, 2020
2 parents a03d5ff + 0b43936 commit 1059dc3
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 14 deletions.
3 changes: 1 addition & 2 deletions src/map.rs
Expand Up @@ -307,8 +307,7 @@ impl ser::Serialize for Map<String, Value> {
use serde::ser::SerializeMap;
let mut map = tri!(serializer.serialize_map(Some(self.len())));
for (k, v) in self {
tri!(map.serialize_key(k));
tri!(map.serialize_value(v));
map.serialize_entry(k, v)?;
}
map.end()
}
Expand Down
16 changes: 12 additions & 4 deletions src/ser.rs
Expand Up @@ -730,6 +730,17 @@ where
}
}

#[inline]
fn serialize_entry<K: ?Sized, V: ?Sized>(&mut self, key: &K, value: &V) -> Result<()>
where
K: Serialize,
V: Serialize,
{
self.serialize_key(key)?;
self.serialize_value(value)?;
Ok(())
}

#[inline]
fn end(self) -> Result<()> {
match self {
Expand Down Expand Up @@ -762,10 +773,7 @@ where
T: Serialize,
{
match *self {
Compound::Map { .. } => {
tri!(ser::SerializeMap::serialize_key(self, key));
ser::SerializeMap::serialize_value(self, value)
}
Compound::Map { .. } => ser::SerializeMap::serialize_entry(self, key, value),
#[cfg(feature = "arbitrary_precision")]
Compound::Number { ref mut ser, .. } => {
if key == crate::number::TOKEN {
Expand Down
8 changes: 2 additions & 6 deletions src/value/ser.rs
Expand Up @@ -24,8 +24,7 @@ impl Serialize for Value {
use serde::ser::SerializeMap;
let mut map = tri!(serializer.serialize_map(Some(m.len())));
for (k, v) in m {
tri!(map.serialize_key(k));
tri!(map.serialize_value(v));
map.serialize_entry(k, v)?;
}
map.end()
}
Expand Down Expand Up @@ -601,10 +600,7 @@ impl serde::ser::SerializeStruct for SerializeMap {
T: Serialize,
{
match *self {
SerializeMap::Map { .. } => {
tri!(serde::ser::SerializeMap::serialize_key(self, key));
serde::ser::SerializeMap::serialize_value(self, value)
}
SerializeMap::Map { .. } => serde::ser::SerializeMap::serialize_entry(self, key, value),
#[cfg(feature = "arbitrary_precision")]
SerializeMap::Number { ref mut out_value } => {
if key == crate::number::TOKEN {
Expand Down
3 changes: 1 addition & 2 deletions tests/test.rs
Expand Up @@ -1467,8 +1467,7 @@ fn test_serialize_map_with_no_len() {
use serde::ser::SerializeMap;
let mut map = serializer.serialize_map(None)?;
for (k, v) in &self.0 {
map.serialize_key(k)?;
map.serialize_value(v)?;
map.serialize_entry(k, v)?;
}
map.end()
}
Expand Down

0 comments on commit 1059dc3

Please sign in to comment.