diff --git a/serde/src/de/mod.rs b/serde/src/de/mod.rs index 54ca9e67..0f865920 100644 --- a/serde/src/de/mod.rs +++ b/serde/src/de/mod.rs @@ -580,7 +580,9 @@ pub trait VariantVisitor { } /// `visit_simple` is called when deserializing a variant with a single value. - fn visit_simple(&mut self) -> Result { + fn visit_simple(&mut self) -> Result + where T: Deserialize, + { Err(Error::syntax_error()) } @@ -616,7 +618,9 @@ impl<'a, T> VariantVisitor for &'a mut T where T: VariantVisitor { (**self).visit_unit() } - fn visit_simple(&mut self) -> Result { + fn visit_simple(&mut self) -> Result + where D: Deserialize, + { (**self).visit_simple() } diff --git a/serde/src/ser/impls.rs b/serde/src/ser/impls.rs index 33d86aa4..311e77f9 100644 --- a/serde/src/ser/impls.rs +++ b/serde/src/ser/impls.rs @@ -126,8 +126,8 @@ impl SeqVisitor for SeqIteratorVisitor { match self.iter.next() { Some(value) => { - let value = try!(serializer.visit_seq_elt(value)); - Ok(Some(value)) + try!(serializer.visit_seq_elt(value)); + Ok(Some(())) } None => Ok(None), } diff --git a/serde/src/ser/mod.rs b/serde/src/ser/mod.rs index 11935cb6..971cc50a 100644 --- a/serde/src/ser/mod.rs +++ b/serde/src/ser/mod.rs @@ -129,8 +129,7 @@ pub trait Serializer { fn visit_enum_simple(&mut self, _name: &str, _variant: &str, - _value: T, - ) -> Result<(), Self::Error> + _value: T) -> Result<(), Self::Error> where T: Serialize; fn visit_none(&mut self) -> Result<(), Self::Error>; diff --git a/serde_codegen/src/de.rs b/serde_codegen/src/de.rs index d1e114de..a34d44d6 100644 --- a/serde_codegen/src/de.rs +++ b/serde_codegen/src/de.rs @@ -765,10 +765,10 @@ fn deserialize_field_visitor( let str_body = if formats.is_empty() { // No formats specific attributes, so no match on format required quote_expr!(cx, - match value { - $default_field_arms - _ => { Err(::serde::de::Error::unknown_field_error(value)) } - }) + match value { + $default_field_arms + _ => { Err(::serde::de::Error::unknown_field_error(value)) } + }) } else { let field_arms: Vec<_> = formats.iter() .map(|fmt| { diff --git a/serde_json/src/value.rs b/serde_json/src/value.rs index 6d0c6a8a..794d8b21 100644 --- a/serde_json/src/value.rs +++ b/serde_json/src/value.rs @@ -743,12 +743,12 @@ impl<'a> de::VariantVisitor for VariantDeserializer<'a> { de::Deserialize::deserialize(&mut Deserializer::new(self.variant.take().unwrap())) } - fn visit_unit(&mut self) -> Result<(), Error> - { + fn visit_unit(&mut self) -> Result<(), Error> { de::Deserialize::deserialize(&mut Deserializer::new(self.val.take().unwrap())) } - fn visit_simple(&mut self) -> Result + fn visit_simple(&mut self) -> Result + where T: de::Deserialize, { de::Deserialize::deserialize(&mut Deserializer::new(self.val.take().unwrap())) } diff --git a/serde_tests/tests/test_bytes.rs b/serde_tests/tests/test_bytes.rs index 65c466a3..c7499ffe 100644 --- a/serde_tests/tests/test_bytes.rs +++ b/serde_tests/tests/test_bytes.rs @@ -42,8 +42,7 @@ impl serde::Serializer for BytesSerializer { fn visit_enum_simple(&mut self, _name: &str, _variant: &str, - _value: T, - ) -> Result<(), Error> + _value: T) -> Result<(), Error> { Err(Error) }