diff options
| author | Edward Barnard | 2015-12-26 19:46:57 +0000 | 
|---|---|---|
| committer | Edward Barnard | 2015-12-26 19:46:57 +0000 | 
| commit | 51105dfdcac4e46ec4ae43f2e375a7da5b5b7818 (patch) | |
| tree | c775adbb272ac9c6f0c8f8d774bd5a0a6dcd6e21 | |
| parent | 0ec05856dab205db2a874dc45340f8b522bd7634 (diff) | |
| download | rust-plist-51105dfdcac4e46ec4ae43f2e375a7da5b5b7818.tar.bz2 | |
Improve deserializer errors
| -rw-r--r-- | src/de.rs | 59 | ||||
| -rw-r--r-- | tests/serde_/mod.rs | 2 | 
2 files changed, 28 insertions, 33 deletions
| @@ -36,52 +36,52 @@ macro_rules! try_next {  #[derive(Debug)]  pub enum DeserializeError { -    None, +    Syntax, +    EndOfStream, +    UnknownField, +    MissingField, +    Reader(Error),  }  impl From<Error> for DeserializeError { -    fn from(_: Error) -> DeserializeError { -        DeserializeError::None +    fn from(err: Error) -> DeserializeError { +        DeserializeError::Reader(err)      }  }  impl SerdeError for DeserializeError {      fn syntax(_msg: &str) -> Self { -        panic!("stx"); -        DeserializeError::None +        DeserializeError::Syntax      }      fn end_of_stream() -> Self { -        panic!("eos"); -        DeserializeError::None +        DeserializeError::EndOfStream      }      fn unknown_field(_field: &str) -> Self { -        panic!("uf"); -        DeserializeError::None +        DeserializeError::UnknownField      }      fn missing_field(_field: &'static str) -> Self { -        panic!("mf"); -        DeserializeError::None +        DeserializeError::MissingField      }  } -pub struct Deserializer<I, E> -    where I: IntoIterator<Item = Result<PlistEvent, E>> +pub struct Deserializer<I> +    where I: IntoIterator<Item = Result<PlistEvent, Error>>  {      events: Peekable<<I as IntoIterator>::IntoIter>,  } -impl<I, E> Deserializer<I, E> where I: IntoIterator<Item = Result<PlistEvent, E>> +impl<I> Deserializer<I> where I: IntoIterator<Item = Result<PlistEvent, Error>>  { -    pub fn new(iter: I) -> Deserializer<I, E> { +    pub fn new(iter: I) -> Deserializer<I> {          Deserializer { events: iter.into_iter().peekable() }      }  } -impl<I, E> SerdeDeserializer for Deserializer<I, E> -    where I: IntoIterator<Item = Result<PlistEvent, E>> +impl<I> SerdeDeserializer for Deserializer<I> +    where I: IntoIterator<Item = Result<PlistEvent, Error>>  {      type Error = DeserializeError; @@ -167,7 +167,7 @@ impl<I, E> SerdeDeserializer for Deserializer<I, E>      }  } -impl<I, E> VariantVisitor for Deserializer<I, E> where I: IntoIterator<Item = Result<PlistEvent, E>> +impl<I> VariantVisitor for Deserializer<I> where I: IntoIterator<Item = Result<PlistEvent, Error>>  {      type Error = DeserializeError; @@ -204,20 +204,17 @@ impl<I, E> VariantVisitor for Deserializer<I, E> where I: IntoIterator<Item = Re      }  } -struct MapSeq<'a, I, E> -    where E: 'a, -          I: 'a + IntoIterator<Item = Result<PlistEvent, E>> +struct MapSeq<'a, I> +    where I: 'a + IntoIterator<Item = Result<PlistEvent, Error>>  { -    de: &'a mut Deserializer<I, E>, +    de: &'a mut Deserializer<I>,      remaining: Option<usize>,      finished: bool,  } -impl<'a, I, E> MapSeq<'a, I, E> -    where E: 'a, -          I: 'a + IntoIterator<Item = Result<PlistEvent, E>> +impl<'a, I> MapSeq<'a, I> where I: 'a + IntoIterator<Item = Result<PlistEvent, Error>>  { -    fn new(de: &'a mut Deserializer<I, E>, len: Option<usize>) -> MapSeq<'a, I, E> { +    fn new(de: &'a mut Deserializer<I>, len: Option<usize>) -> MapSeq<'a, I> {          MapSeq {              de: de,              remaining: len, @@ -226,9 +223,8 @@ impl<'a, I, E> MapSeq<'a, I, E>      }  } -impl<'a, I, E> SeqVisitor for MapSeq<'a, I, E> -    where E: 'a, -          I: 'a + IntoIterator<Item = Result<PlistEvent, E>> +impl<'a, I> SeqVisitor for MapSeq<'a, I> +    where I: 'a + IntoIterator<Item = Result<PlistEvent, Error>>  {      type Error = DeserializeError; @@ -258,9 +254,8 @@ impl<'a, I, E> SeqVisitor for MapSeq<'a, I, E>      }  } -impl<'a, I, E> MapVisitor for MapSeq<'a, I, E> -    where E: 'a, -          I: 'a + IntoIterator<Item = Result<PlistEvent, E>> +impl<'a, I> MapVisitor for MapSeq<'a, I> +    where I: 'a + IntoIterator<Item = Result<PlistEvent, Error>>  {      type Error = DeserializeError; diff --git a/tests/serde_/mod.rs b/tests/serde_/mod.rs index 184d4f0..f48058a 100644 --- a/tests/serde_/mod.rs +++ b/tests/serde_/mod.rs @@ -28,7 +28,7 @@ fn new_serializer() -> Serializer<VecWriter> {      Serializer::new(VecWriter::new())  } -fn new_deserializer(events: Vec<PlistEvent>) -> Deserializer<Vec<Result<PlistEvent, ()>>, ()> { +fn new_deserializer(events: Vec<PlistEvent>) -> Deserializer<Vec<PlistResult<PlistEvent>>> {      let result_events = events.into_iter().map(|e| Ok(e)).collect();      Deserializer::new(result_events)  } | 
