diff --git a/serde/src/ser/mod.rs b/serde/src/ser/mod.rs index 9fa5ca32..a1528839 100644 --- a/serde/src/ser/mod.rs +++ b/serde/src/ser/mod.rs @@ -625,6 +625,24 @@ pub trait Serializer: Sized { } serializer.end() } + + /// Collect an iterator as a map. + /// + /// The default implementation serializes each pair yielded by the iterator + /// using `Self::SerializeMap`. Implementors should not need to override + /// this method. + fn collect_map(self, iter: I) -> Result + where K: Serialize, + V: Serialize, + I: IntoIterator, + { + let iter = iter.into_iter(); + let mut serializer = try!(self.serialize_map(iterator_len_hint(&iter))); + for (key, value) in iter { + try!(serializer.serialize_entry(&key, &value)); + } + serializer.end() + } } /// Returned from `Serializer::serialize_seq` and