diff --git a/serde/src/ser/impls.rs b/serde/src/ser/impls.rs index a7f861eb..4c6d1182 100644 --- a/serde/src/ser/impls.rs +++ b/serde/src/ser/impls.rs @@ -305,11 +305,12 @@ impl Serialize for ops::Range fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer, { - let mut seq_serializer = try!(serializer.serialize_seq(Some(self.len()))); + let len = iter::Step::steps_between(&self.start, &self.end, &A::one()); + let state = try!(serializer.serialize_seq(Some(len))); for e in self.iter() { - try!(seq_serializer.serialize_elt(e)); + try!(serializer.serialize_seq_elt(e)); } - seq_serializer.drop() + serializer.serialize_seq_end(Some(len), state); } }