From ab3f627ca89cb929d38df1c737769ec65213ec17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lena=20Hellstr=C3=B6m?= Date: Tue, 31 Jan 2017 13:21:07 -0600 Subject: [PATCH] Don't panic. (#96) --- src/serde/writer.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/serde/writer.rs b/src/serde/writer.rs index 3b5aaa5..437745c 100644 --- a/src/serde/writer.rs +++ b/src/serde/writer.rs @@ -5,6 +5,7 @@ use std::io::Write; use std::u32; use serde_crate as serde; +use serde_crate::ser::Error as SeError; use byteorder::{BigEndian, WriteBytesExt}; @@ -172,7 +173,7 @@ impl<'a, W: Write> serde::Serializer for &'a mut Serializer { } fn serialize_seq(self, len: Option) -> SerializeResult { - let len = len.expect("do not know how to serialize a sequence with no length"); + let len = try!(len.ok_or(SerializeError::custom("do not know how to serialize a sequence with no length"))); try!(self.serialize_u64(len as u64)); Ok(Compound {ser: self}) } @@ -200,7 +201,7 @@ impl<'a, W: Write> serde::Serializer for &'a mut Serializer { } fn serialize_map(self, len: Option) -> SerializeResult { - let len = len.expect("do not know how to serialize a map with no length"); + let len = try!(len.ok_or(SerializeError::custom("do not know how to serialize a map with no length"))); try!(self.serialize_u64(len as u64)); Ok(Compound {ser: self}) } @@ -367,7 +368,7 @@ impl<'a> serde::Serializer for &'a mut SizeChecker { } fn serialize_seq(self, len: Option) -> SerializeResult { - let len = len.expect("do not know how to serialize a sequence with no length"); + let len = try!(len.ok_or(SerializeError::custom("do not know how to serialize a sequence with no length"))); try!(self.serialize_u64(len as u64)); Ok(SizeCompound {ser: self}) @@ -397,7 +398,7 @@ impl<'a> serde::Serializer for &'a mut SizeChecker { fn serialize_map(self, len: Option) -> SerializeResult { - let len = len.expect("do not know how to serialize a map with no length"); + let len = try!(len.ok_or(SerializeError::custom("do not know how to serialize a map with no length"))); try!(self.serialize_u64(len as u64)); Ok(SizeCompound {ser: self})