Introduce Serializer::collect_map

This commit is contained in:
Anthony Ramine 2017-02-03 21:09:54 +01:00
parent d00a895902
commit 89bb16da6b

View File

@ -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<K, V, I>(self, iter: I) -> Result<Self::Ok, Self::Error>
where K: Serialize,
V: Serialize,
I: IntoIterator<Item = (K, V)>,
{
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