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);
}
}