diff --git a/serde/src/ser/impls.rs b/serde/src/ser/impls.rs index 17cd872b..4be35fc3 100644 --- a/serde/src/ser/impls.rs +++ b/serde/src/ser/impls.rs @@ -226,7 +226,7 @@ array_impls!(32); #[cfg(feature = "unstable")] impl<'a, I> Serialize for Iterator - where I: iter::Iterator, ::Item: Serialize + where I: IntoIterator, ::Item: Serialize { #[inline] fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> @@ -234,7 +234,7 @@ impl<'a, I> Serialize for Iterator { // FIXME: use specialization to prevent invalidating the object in case of clonable iterators? let iter = match self.0.borrow_mut().take() { - Some(iter) => iter, + Some(iter) => iter.into_iter(), None => return Err(S::Error::custom("Iterator used twice")), }; let size = match iter.size_hint() {