diff --git a/serde2/serde2_macros/src/lib.rs b/serde2/serde2_macros/src/lib.rs index 280a719f..43dfea8d 100644 --- a/serde2/serde2_macros/src/lib.rs +++ b/serde2/serde2_macros/src/lib.rs @@ -1123,9 +1123,12 @@ fn deserialize_enum( impl ::serde2::de::Visitor for __Visitor { type Value = $type_ident; - fn visit_enum< - __V: ::serde2::de::EnumVisitor, - >(&mut self, name: &str, variant: &str, mut visitor: __V) -> Result<$type_ident, __V::Error> { + fn visit_enum<__V>(&mut self, + name: &str, + variant: &str, + mut visitor: __V) -> Result<$type_ident, __V::Error> + where __V: ::serde2::de::EnumVisitor, + { if name == $type_name { self.visit_variant(variant, visitor) } else { @@ -1133,9 +1136,11 @@ fn deserialize_enum( } } - fn visit_variant< - __V: ::serde2::de::EnumVisitor, - >(&mut self, name: &str, mut visitor: __V) -> Result<$type_ident, __V::Error> { + fn visit_variant<__V>(&mut self, + name: &str, + mut visitor: __V) -> Result<$type_ident, __V::Error> + where __V: ::serde2::de::EnumVisitor + { match name { $variant_arms _ => Err(::serde2::de::Error::syntax_error()), diff --git a/serde2/src/de.rs b/serde2/src/de.rs index 5a6a8749..b0d26389 100644 --- a/serde2/src/de.rs +++ b/serde2/src/de.rs @@ -15,17 +15,15 @@ pub trait Error { } pub trait Deserialize { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result; + fn deserialize(deserializer: &mut D) -> Result + where D: Deserializer; } pub trait Deserializer { type Error: Error; - fn visit< - V: Visitor, - >(&mut self, visitor: V) -> Result; + fn visit(&mut self, visitor: V) -> Result + where V: Visitor; /// The `visit_option` method allows a `Deserialize` type to inform the /// `Deserializer` that it's expecting an optional value. This allows @@ -33,9 +31,9 @@ pub trait Deserializer { /// convert the null value into a `None`, and a regular value as /// `Some(value)`. #[inline] - fn visit_option< - V: Visitor, - >(&mut self, visitor: V) -> Result { + fn visit_option(&mut self, visitor: V) -> Result + where V: Visitor, + { self.visit(visitor) } } @@ -43,169 +41,172 @@ pub trait Deserializer { pub trait Visitor { type Value; - fn visit_bool< - E: Error, - >(&mut self, _v: bool) -> Result { + fn visit_bool(&mut self, _v: bool) -> Result + where E: Error, + { Err(Error::syntax_error()) } - fn visit_isize< - E: Error, - >(&mut self, v: isize) -> Result { + fn visit_isize(&mut self, v: isize) -> Result + where E: Error, + { self.visit_i64(v as i64) } - fn visit_i8< - E: Error, - >(&mut self, v: i8) -> Result { + fn visit_i8(&mut self, v: i8) -> Result + where E: Error, + { self.visit_i64(v as i64) } - fn visit_i16< - E: Error, - >(&mut self, v: i16) -> Result { + fn visit_i16(&mut self, v: i16) -> Result + where E: Error, + { self.visit_i64(v as i64) } - fn visit_i32< - E: Error, - >(&mut self, v: i32) -> Result { + fn visit_i32(&mut self, v: i32) -> Result + where E: Error, + { self.visit_i64(v as i64) } - fn visit_i64< - E: Error, - >(&mut self, _v: i64) -> Result { + fn visit_i64(&mut self, _v: i64) -> Result + where E: Error, + { Err(Error::syntax_error()) } - fn visit_usize< - E: Error, - >(&mut self, v: usize) -> Result { + fn visit_usize(&mut self, v: usize) -> Result + where E: Error, + { self.visit_u64(v as u64) } - fn visit_u8< - E: Error, - >(&mut self, v: u8) -> Result { + fn visit_u8(&mut self, v: u8) -> Result + where E: Error, + { self.visit_u64(v as u64) } - fn visit_u16< - E: Error, - >(&mut self, v: u16) -> Result { + fn visit_u16(&mut self, v: u16) -> Result + where E: Error, + { self.visit_u64(v as u64) } - fn visit_u32< - E: Error, - >(&mut self, v: u32) -> Result { + fn visit_u32(&mut self, v: u32) -> Result + where E: Error, + { self.visit_u64(v as u64) } - fn visit_u64< - E: Error, - >(&mut self, _v: u64) -> Result { + fn visit_u64(&mut self, _v: u64) -> Result + where E: Error, + { Err(Error::syntax_error()) } - fn visit_f32< - E: Error, - >(&mut self, v: f32) -> Result { + fn visit_f32(&mut self, v: f32) -> Result + where E: Error, + { self.visit_f64(v as f64) } - fn visit_f64< - E: Error, - >(&mut self, _v: f64) -> Result { + fn visit_f64(&mut self, _v: f64) -> Result + where E: Error, + { Err(Error::syntax_error()) } #[inline] - fn visit_char< - E: Error, - >(&mut self, v: char) -> Result { + fn visit_char(&mut self, v: char) -> Result + where E: Error, + { // The unwraps in here should be safe. let mut s = &mut [0; 4]; let len = v.encode_utf8(s).unwrap(); self.visit_str(str::from_utf8(&s[..len]).unwrap()) } - fn visit_str< - E: Error, - >(&mut self, _v: &str) -> Result { + fn visit_str(&mut self, _v: &str) -> Result + where E: Error, + { Err(Error::syntax_error()) } #[inline] - fn visit_string< - E: Error, - >(&mut self, v: String) -> Result { + fn visit_string(&mut self, v: String) -> Result + where E: Error, + { self.visit_str(&v) } - fn visit_unit< - E: Error, - >(&mut self) -> Result { + fn visit_unit(&mut self) -> Result + where E: Error, + { Err(Error::syntax_error()) } #[inline] - fn visit_named_unit< - E: Error, - >(&mut self, _name: &str) -> Result { + fn visit_named_unit(&mut self, _name: &str) -> Result + where E: Error, + { self.visit_unit() } - fn visit_none< - E: Error, - >(&mut self) -> Result { + fn visit_none(&mut self) -> Result + where E: Error, + { Err(Error::syntax_error()) } - fn visit_some< - D: Deserializer, - >(&mut self, _deserializer: &mut D) -> Result { + fn visit_some(&mut self, _deserializer: &mut D) -> Result + where D: Deserializer, + { Err(Error::syntax_error()) } - fn visit_seq< - V: SeqVisitor, - >(&mut self, _visitor: V) -> Result { + fn visit_seq(&mut self, _visitor: V) -> Result + where V: SeqVisitor, + { Err(Error::syntax_error()) } #[inline] - fn visit_named_seq< - V: SeqVisitor, - >(&mut self, _name: &str, visitor: V) -> Result { + fn visit_named_seq(&mut self, _name: &str, visitor: V) -> Result + where V: SeqVisitor, + { self.visit_seq(visitor) } - fn visit_map< - V: MapVisitor, - >(&mut self, _visitor: V) -> Result { + fn visit_map(&mut self, _visitor: V) -> Result + where V: MapVisitor, + { Err(Error::syntax_error()) } #[inline] - fn visit_named_map< - V: MapVisitor, - >(&mut self, _name: &str, visitor: V) -> Result { + fn visit_named_map(&mut self, _name: &str, visitor: V) -> Result + where V: MapVisitor, + { self.visit_map(visitor) } #[inline] - fn visit_enum< - V: EnumVisitor, - >(&mut self, _name: &str, _variant: &str, _visitor: V) -> Result { + fn visit_enum(&mut self, + _name: &str, + _variant: &str, + _visitor: V) -> Result + where V: EnumVisitor, + { Err(Error::syntax_error()) } #[inline] - fn visit_variant< - V: EnumVisitor, - >(&mut self, _name: &str, _visitor: V) -> Result { + fn visit_variant(&mut self, _name: &str, _visitor: V) -> Result + where V: EnumVisitor, + { Err(Error::syntax_error()) } } @@ -262,15 +263,15 @@ pub trait EnumVisitor { Err(Error::syntax_error()) } - fn visit_seq< - V: EnumSeqVisitor, - >(&mut self, _visitor: V) -> Result { + fn visit_seq(&mut self, _visitor: V) -> Result + where V: EnumSeqVisitor, + { Err(Error::syntax_error()) } - fn visit_map< - V: EnumMapVisitor, - >(&mut self, _visitor: V) -> Result { + fn visit_map(&mut self, _visitor: V) -> Result + where V: EnumMapVisitor, + { Err(Error::syntax_error()) } } @@ -278,17 +279,15 @@ pub trait EnumVisitor { pub trait EnumSeqVisitor { type Value; - fn visit< - V: SeqVisitor, - >(&mut self, visitor: V) -> Result; + fn visit(&mut self, visitor: V) -> Result + where V: SeqVisitor; } pub trait EnumMapVisitor { type Value; - fn visit< - V: MapVisitor, - >(&mut self, visitor: V) -> Result; + fn visit(&mut self, visitor: V) -> Result + where V: MapVisitor; } /////////////////////////////////////////////////////////////////////////////// @@ -298,23 +297,23 @@ struct UnitVisitor; impl Visitor for UnitVisitor { type Value = (); - fn visit_unit< - E: Error, - >(&mut self) -> Result<(), E> { + fn visit_unit(&mut self) -> Result<(), E> + where E: Error, + { Ok(()) } - fn visit_seq< - V: SeqVisitor, - >(&mut self, mut visitor: V) -> Result<(), V::Error> { + fn visit_seq(&mut self, mut visitor: V) -> Result<(), V::Error> + where V: SeqVisitor, + { visitor.end() } } impl Deserialize for () { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result<(), D::Error> { + fn deserialize(deserializer: &mut D) -> Result<(), D::Error> + where D: Deserializer, + { deserializer.visit(UnitVisitor) } } @@ -326,17 +325,17 @@ struct BoolVisitor; impl Visitor for BoolVisitor { type Value = bool; - fn visit_bool< - E: Error, - >(&mut self, v: bool) -> Result { + fn visit_bool(&mut self, v: bool) -> Result + where E: Error, + { Ok(v) } } impl Deserialize for bool { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result { + fn deserialize(deserializer: &mut D) -> Result + where D: Deserializer, + { deserializer.visit(BoolVisitor) } } @@ -346,9 +345,9 @@ impl Deserialize for bool { macro_rules! impl_deserialize_num_method { ($src_ty:ty, $method:ident, $from_method:ident) => { #[inline] - fn $method< - E: Error, - >(&mut self, v: $src_ty) -> Result { + fn $method(&mut self, v: $src_ty) -> Result + where E: Error, + { match FromPrimitive::$from_method(v) { Some(v) => Ok(v), None => Err(Error::syntax_error()), @@ -393,9 +392,9 @@ macro_rules! impl_deserialize_num { ($ty:ty) => { impl Deserialize for $ty { #[inline] - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result<$ty, D::Error> { + fn deserialize(deserializer: &mut D) -> Result<$ty, D::Error> + where D: Deserializer, + { deserializer.visit(PrimitiveVisitor::new()) } } @@ -423,16 +422,16 @@ impl Visitor for CharVisitor { type Value = char; #[inline] - fn visit_char< - E: Error, - >(&mut self, v: char) -> Result { + fn visit_char(&mut self, v: char) -> Result + where E: Error, + { Ok(v) } #[inline] - fn visit_str< - E: Error, - >(&mut self, v: &str) -> Result { + fn visit_str(&mut self, v: &str) -> Result + where E: Error, + { let mut iter = v.chars(); if let Some(v) = iter.next() { if iter.next().is_some() { @@ -448,9 +447,9 @@ impl Visitor for CharVisitor { impl Deserialize for char { #[inline] - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result { + fn deserialize(deserializer: &mut D) -> Result + where D: Deserializer, + { deserializer.visit(CharVisitor) } } @@ -462,23 +461,23 @@ struct StringVisitor; impl Visitor for StringVisitor { type Value = String; - fn visit_str< - E: Error, - >(&mut self, v: &str) -> Result { + fn visit_str(&mut self, v: &str) -> Result + where E: Error, + { Ok(v.to_string()) } - fn visit_string< - E: Error, - >(&mut self, v: String) -> Result { + fn visit_string(&mut self, v: String) -> Result + where E: Error, + { Ok(v) } } impl Deserialize for String { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result { + fn deserialize(deserializer: &mut D) -> Result + where D: Deserializer, + { deserializer.visit(StringVisitor) } } @@ -495,24 +494,24 @@ impl< type Value = Option; #[inline] - fn visit_none< - E: Error, - >(&mut self) -> Result, E> { + fn visit_none(&mut self) -> Result, E> + where E: Error, + { Ok(None) } #[inline] - fn visit_some< - D: Deserializer, - >(&mut self, deserializer: &mut D) -> Result, D::Error> { + fn visit_some(&mut self, deserializer: &mut D) -> Result, D::Error> + where D: Deserializer, + { Ok(Some(try!(Deserialize::deserialize(deserializer)))) } } impl Deserialize for Option where T: Deserialize { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result, D::Error> { + fn deserialize(deserializer: &mut D) -> Result, D::Error> + where D: Deserializer, + { deserializer.visit_option(OptionVisitor { marker: PhantomData }) } } @@ -527,9 +526,9 @@ impl Visitor for VecVisitor where T: Deserialize { type Value = Vec; #[inline] - fn visit_seq< - V: SeqVisitor, - >(&mut self, mut visitor: V) -> Result, V::Error> { + fn visit_seq(&mut self, mut visitor: V) -> Result, V::Error> + where V: SeqVisitor, + { let (len, _) = visitor.size_hint(); let mut values = Vec::with_capacity(len); @@ -542,9 +541,9 @@ impl Visitor for VecVisitor where T: Deserialize { } impl Deserialize for Vec { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result, D::Error> { + fn deserialize(deserializer: &mut D) -> Result, D::Error> + where D: Deserializer, + { deserializer.visit(VecVisitor { marker: PhantomData }) } } @@ -566,9 +565,9 @@ macro_rules! tuple_impls { #[inline] #[allow(non_snake_case)] - fn visit_seq< - V: SeqVisitor, - >(&mut self, mut visitor: V) -> Result<($($name,)+), V::Error> { + fn visit_seq(&mut self, mut visitor: V) -> Result<($($name,)+), V::Error> + where V: SeqVisitor, + { $( let $name = match try!(visitor.visit()) { Some(value) => value, @@ -586,9 +585,9 @@ macro_rules! tuple_impls { $($name: Deserialize),+ > Deserialize for ($($name,)+) { #[inline] - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result<($($name,)+), D::Error> { + fn deserialize(deserializer: &mut D) -> Result<($($name,)+), D::Error> + where D: Deserializer, + { deserializer.visit($visitor { marker: PhantomData }) } } @@ -624,9 +623,9 @@ impl Visitor for HashMapVisitor type Value = HashMap; #[inline] - fn visit_map< - V_: MapVisitor, - >(&mut self, mut visitor: V_) -> Result, V_::Error> { + fn visit_map(&mut self, mut visitor: V_) -> Result, V_::Error> + where V_: MapVisitor, + { let (len, _) = visitor.size_hint(); let mut values = HashMap::with_capacity(len); @@ -642,9 +641,9 @@ impl Deserialize for HashMap where K: Deserialize + Eq + Hash, V: Deserialize, { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result, D::Error> { + fn deserialize(deserializer: &mut D) -> Result, D::Error> + where D: Deserializer, + { deserializer.visit(HashMapVisitor { marker: PhantomData }) } } @@ -662,9 +661,9 @@ impl Visitor for BTreeMapVisitor type Value = BTreeMap; #[inline] - fn visit_map< - Visitor: MapVisitor, - >(&mut self, mut visitor: Visitor) -> Result, Visitor::Error> { + fn visit_map(&mut self, mut visitor: Visitor) -> Result, Visitor::Error> + where Visitor: MapVisitor, + { let mut values = BTreeMap::new(); while let Some((key, value)) = try!(visitor.visit()) { @@ -679,9 +678,9 @@ impl< K: Deserialize + Eq + Ord, V: Deserialize, > Deserialize for BTreeMap { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result, D::Error> { + fn deserialize(deserializer: &mut D) -> Result, D::Error> + where D: Deserializer, + { deserializer.visit(BTreeMapVisitor { marker: PhantomData }) } } @@ -763,9 +762,9 @@ mod tests { impl<'a> Deserializer for TokenDeserializer<'a> { type Error = Error; - fn visit< - V: Visitor, - >(&mut self, mut visitor: V) -> Result { + fn visit(&mut self, mut visitor: V) -> Result + where V: Visitor, + { match self.tokens.next() { Some(Token::Bool(v)) => visitor.visit_bool(v), Some(Token::Isize(v)) => visitor.visit_isize(v), @@ -828,9 +827,9 @@ mod tests { /// Hook into `Option` deserializing so we can treat `Unit` as a /// `None`, or a regular value as `Some(value)`. #[inline] - fn visit_option< - V: Visitor, - >(&mut self, mut visitor: V) -> Result { + fn visit_option(&mut self, mut visitor: V) -> Result + where V: Visitor, + { match self.tokens.peek() { Some(&Token::Option(false)) => { self.tokens.next(); @@ -861,9 +860,9 @@ mod tests { impl<'a, 'b> super::SeqVisitor for TokenDeserializerSeqVisitor<'a, 'b> { type Error = Error; - fn visit< - T: Deserialize, - >(&mut self) -> Result, Error> { + fn visit(&mut self) -> Result, Error> + where T: Deserialize, + { let first = self.first; self.first = false; @@ -904,9 +903,9 @@ mod tests { impl<'a, 'b> super::MapVisitor for TokenDeserializerMapVisitor<'a, 'b> { type Error = Error; - fn visit_key< - K: Deserialize, - >(&mut self) -> Result, Error> { + fn visit_key(&mut self) -> Result, Error> + where K: Deserialize, + { let first = self.first; self.first = false; @@ -920,9 +919,9 @@ mod tests { } } - fn visit_value< - V: Deserialize, - >(&mut self) -> Result { + fn visit_value(&mut self) -> Result + where V: Deserialize, + { Ok(try!(Deserialize::deserialize(self.de))) } @@ -1010,9 +1009,9 @@ mod tests { struct NamedUnit; impl Deserialize for NamedUnit { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result { + fn deserialize(deserializer: &mut D) -> Result + where D: Deserializer, + { deserializer.visit(NamedUnitVisitor) } } @@ -1052,9 +1051,9 @@ mod tests { struct NamedSeq(i32, i32, i32); impl Deserialize for NamedSeq { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result { + fn deserialize(deserializer: &mut D) -> Result + where D: Deserializer, + { deserializer.visit(NamedSeqVisitor) } } @@ -1108,9 +1107,9 @@ mod tests { } impl Deserialize for NamedMap { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result { + fn deserialize(deserializer: &mut D) -> Result + where D: Deserializer, + { deserializer.visit(NamedMapVisitor) } } @@ -1159,9 +1158,9 @@ mod tests { } impl Deserialize for NamedMapField { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result { + fn deserialize(deserializer: &mut D) -> Result + where D: Deserializer, + { deserializer.visit(NamedMapFieldVisitor) } } @@ -1193,9 +1192,9 @@ mod tests { } impl Deserialize for Enum { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result { + fn deserialize(deserializer: &mut D) -> Result + where D: Deserializer, + { deserializer.visit(EnumVisitor) } } @@ -1293,9 +1292,9 @@ mod tests { } impl Deserialize for EnumMapField { - fn deserialize< - D: Deserializer, - >(deserializer: &mut D) -> Result { + fn deserialize(deserializer: &mut D) -> Result + where D: Deserializer, + { deserializer.visit(EnumMapFieldVisitor) } } diff --git a/serde2/src/json/de.rs b/serde2/src/json/de.rs index 3021cd56..26c2180e 100644 --- a/serde2/src/json/de.rs +++ b/serde2/src/json/de.rs @@ -81,9 +81,9 @@ impl> Deserializer { } #[inline] - fn parse_value< - V: de::Visitor, - >(&mut self, mut visitor: V) -> Result { + fn parse_value(&mut self, mut visitor: V) -> Result + where V: de::Visitor, + { self.parse_whitespace(); if self.eof() { @@ -140,9 +140,9 @@ impl> Deserializer { } #[inline] - fn parse_number< - V: de::Visitor, - >(&mut self, mut visitor: V) -> Result { + fn parse_number(&mut self, mut visitor: V) -> Result + where V: de::Visitor, + { let mut neg = 1; if self.ch_is(b'-') { @@ -387,9 +387,9 @@ impl> de::Deserializer for Deserializer { type Error = Error; #[inline] - fn visit< - V: de::Visitor, - >(&mut self, visitor: V) -> Result { + fn visit(&mut self, visitor: V) -> Result + where V: de::Visitor, + { self.parse_value(visitor) } } @@ -402,9 +402,9 @@ struct SeqVisitor<'a, Iter: 'a> { impl<'a, Iter: Iterator> de::SeqVisitor for SeqVisitor<'a, Iter> { type Error = Error; - fn visit< - T: de::Deserialize, - >(&mut self) -> Result, Error> { + fn visit(&mut self) -> Result, Error> + where T: de::Deserialize, + { self.de.parse_whitespace(); if self.de.ch_is(b']') { @@ -448,9 +448,9 @@ struct MapVisitor<'a, Iter: 'a> { impl<'a, Iter: Iterator> de::MapVisitor for MapVisitor<'a, Iter> { type Error = Error; - fn visit_key< - K: de::Deserialize, - >(&mut self) -> Result, Error> { + fn visit_key(&mut self) -> Result, Error> + where K: de::Deserialize, + { self.de.parse_whitespace(); if self.de.ch_is(b'}') { @@ -482,9 +482,9 @@ impl<'a, Iter: Iterator> de::MapVisitor for MapVisitor<'a, Iter> { Ok(Some(try!(de::Deserialize::deserialize(self.de)))) } - fn visit_value< - V: de::Deserialize, - >(&mut self) -> Result { + fn visit_value(&mut self) -> Result + where V: de::Deserialize, + { self.de.parse_whitespace(); if self.de.ch_is(b':') { diff --git a/serde2/src/json/ser.rs b/serde2/src/json/ser.rs index 7cb27a4d..aa316e50 100644 --- a/serde2/src/json/ser.rs +++ b/serde2/src/json/ser.rs @@ -32,9 +32,9 @@ impl ser::Serializer for Serializer { type Error = io::Error; #[inline] - fn visit< - T: ser::Serialize, - >(&mut self, value: &T) -> io::Result<()> { + fn visit(&mut self, value: &T) -> io::Result<()> + where T: ser::Serialize, + { value.visit(&mut Visitor { writer: &mut self.writer }) } } diff --git a/serde2/src/json/value.rs b/serde2/src/json/value.rs index ac513a35..3d84c67a 100644 --- a/serde2/src/json/value.rs +++ b/serde2/src/json/value.rs @@ -21,9 +21,9 @@ pub enum Value { impl ser::Serialize for Value { #[inline] - fn visit< - V: ser::Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: ser::Visitor, + { match *self { Value::Null => visitor.visit_unit(), Value::Bool(v) => visitor.visit_bool(v), @@ -91,9 +91,9 @@ impl ser::Serializer for Serializer { type Error = (); #[inline] - fn visit< - T: ser::Serialize, - >(&mut self, value: &T) -> Result<(), ()> { + fn visit(&mut self, value: &T) -> Result<(), ()> + where T: ser::Serialize, + { try!(value.visit(self)); Ok(()) } @@ -151,9 +151,9 @@ impl ser::Visitor for Serializer { } #[inline] - fn visit_some< - V: ser::Serialize, - >(&mut self, value: V) -> Result<(), ()> { + fn visit_some(&mut self, value: V) -> Result<(), ()> + where V: ser::Serialize, + { value.visit(self) } @@ -265,9 +265,9 @@ impl de::Deserializer for Deserializer { type Error = Error; #[inline] - fn visit< - V: de::Visitor, - >(&mut self, mut visitor: V) -> Result { + fn visit(&mut self, mut visitor: V) -> Result + where V: de::Visitor, + { let value = match self.value.take() { Some(value) => value, None => { return Err(de::Error::end_of_stream_error()); } @@ -300,9 +300,9 @@ impl de::Deserializer for Deserializer { } #[inline] - fn visit_option< - V: de::Visitor, - >(&mut self, mut visitor: V) -> Result { + fn visit_option(&mut self, mut visitor: V) -> Result + where V: de::Visitor, + { match self.value { Some(Value::Null) => visitor.visit_none(), Some(_) => visitor.visit_some(self), diff --git a/serde2/src/ser.rs b/serde2/src/ser.rs index 761820ee..b1b8d8fe 100644 --- a/serde2/src/ser.rs +++ b/serde2/src/ser.rs @@ -171,9 +171,8 @@ pub trait Visitor { } pub trait SeqVisitor { - fn visit< - V: Visitor, - >(&mut self, visitor: &mut V) -> Result, V::Error>; + fn visit(&mut self, visitor: &mut V) -> Result, V::Error> + where V: Visitor; #[inline] fn size_hint(&self) -> (usize, Option) { @@ -182,9 +181,8 @@ pub trait SeqVisitor { } pub trait MapVisitor { - fn visit< - V: Visitor, - >(&mut self, visitor: &mut V) -> Result, V::Error>; + fn visit(&mut self, visitor: &mut V) -> Result, V::Error> + where V: Visitor; #[inline] fn size_hint(&self) -> (usize, Option) { @@ -198,9 +196,9 @@ macro_rules! impl_visit { ($ty:ty, $method:ident) => { impl Serialize for $ty { #[inline] - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { visitor.$method(*self) } } @@ -226,18 +224,18 @@ impl_visit!(char, visit_char); impl<'a> Serialize for &'a str { #[inline] - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { visitor.visit_str(*self) } } impl Serialize for String { #[inline] - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { (&self[..]).visit(visitor) } } @@ -246,9 +244,9 @@ impl Serialize for String { impl Serialize for Option where T: Serialize { #[inline] - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { match *self { Some(ref value) => visitor.visit_some(value), None => visitor.visit_none(), @@ -263,7 +261,9 @@ pub struct SeqIteratorVisitor { first: bool, } -impl> SeqIteratorVisitor { +impl SeqIteratorVisitor + where Iter: Iterator +{ #[inline] pub fn new(iter: Iter) -> SeqIteratorVisitor { SeqIteratorVisitor { @@ -273,14 +273,14 @@ impl> SeqIteratorVisitor { } } -impl< - T: Serialize, - Iter: Iterator, -> SeqVisitor for SeqIteratorVisitor { +impl SeqVisitor for SeqIteratorVisitor + where T: Serialize, + Iter: Iterator, +{ #[inline] - fn visit< - V: Visitor, - >(&mut self, visitor: &mut V) -> Result, V::Error> { + fn visit(&mut self, visitor: &mut V) -> Result, V::Error> + where V: Visitor, + { let first = self.first; self.first = false; @@ -301,34 +301,31 @@ impl< /////////////////////////////////////////////////////////////////////////////// -impl< - 'a, - T: Serialize, -> Serialize for &'a [T] { +impl<'a, T> Serialize for &'a [T] + where T: Serialize, +{ #[inline] - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { visitor.visit_seq(SeqIteratorVisitor::new(self.iter())) } } -impl< - T: Serialize, -> Serialize for Vec { +impl Serialize for Vec where T: Serialize { #[inline] - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { (&self[..]).visit(visitor) } } impl Serialize for BTreeSet where T: Serialize { #[inline] - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { visitor.visit_seq(SeqIteratorVisitor::new(self.iter())) } } @@ -347,9 +344,9 @@ impl Serialize for HashSet impl Serialize for () { #[inline] - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { visitor.visit_unit() } } @@ -384,13 +381,12 @@ macro_rules! tuple_impls { } } - impl< - 'a, - $($T: Serialize),+ - > SeqVisitor for $TupleVisitor<'a, $($T),+> { - fn visit< - V: Visitor, - >(&mut self, visitor: &mut V) -> Result, V::Error> { + impl<'a, $($T),+> SeqVisitor for $TupleVisitor<'a, $($T),+> + where $($T: Serialize),+ + { + fn visit(&mut self, visitor: &mut V) -> Result, V::Error> + where V: Visitor, + { let first = self.first; self.first = false; @@ -412,9 +408,9 @@ macro_rules! tuple_impls { } } - impl< - $($T: Serialize),+ - > Serialize for ($($T,)+) { + impl<$($T),+> Serialize for ($($T,)+) + where $($T: Serialize),+ + { #[inline] fn visit(&self, visitor: &mut V) -> Result { visitor.visit_seq($TupleVisitor::new(self)) @@ -536,7 +532,9 @@ pub struct MapIteratorVisitor { first: bool, } -impl> MapIteratorVisitor { +impl MapIteratorVisitor + where Iter: Iterator +{ #[inline] pub fn new(iter: Iter) -> MapIteratorVisitor { MapIteratorVisitor { @@ -552,9 +550,9 @@ impl MapVisitor for MapIteratorVisitor I: Iterator, { #[inline] - fn visit< - V_: Visitor, - >(&mut self, visitor: &mut V_) -> Result, V_::Error> { + fn visit(&mut self, visitor: &mut V_) -> Result, V_::Error> + where V_: Visitor, + { let first = self.first; self.first = false; @@ -600,42 +598,40 @@ impl Serialize for HashMap impl<'a, T> Serialize for &'a T where T: Serialize { #[inline] - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { (**self).visit(visitor) } } impl<'a, T> Serialize for Box where T: Serialize { #[inline] - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { (**self).visit(visitor) } } -impl< - 'a, - T: Serialize, -> Serialize for Rc { +impl<'a, T> Serialize for Rc + where T: Serialize, +{ #[inline] - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { (**self).visit(visitor) } } -impl< - 'a, - T: Serialize, -> Serialize for Arc { +impl<'a, T> Serialize for Arc + where T: Serialize, +{ #[inline] - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { (**self).visit(visitor) } } @@ -923,9 +919,9 @@ mod tests { struct NamedUnit; impl Serialize for NamedUnit { - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { visitor.visit_named_unit("NamedUnit") } } @@ -933,9 +929,9 @@ mod tests { struct NamedSeq(i32, i32, i32); impl Serialize for NamedSeq { - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { visitor.visit_named_seq("NamedSeq", NamedSeqVisitor { tuple: self, state: 0, @@ -949,9 +945,9 @@ mod tests { } impl<'a> SeqVisitor for NamedSeqVisitor<'a> { - fn visit< - V: Visitor, - >(&mut self, visitor: &mut V) -> Result, V::Error> { + fn visit(&mut self, visitor: &mut V) -> Result, V::Error> + where V: Visitor, + { match self.state { 0 => { self.state += 1; @@ -981,9 +977,9 @@ mod tests { } impl Serialize for Enum { - fn visit< - V: Visitor, - >(&self, visitor: &mut V) -> Result { + fn visit(&self, visitor: &mut V) -> Result + where V: Visitor, + { match *self { Enum::Unit => { visitor.visit_enum_unit("Enum", "Unit") @@ -1013,9 +1009,9 @@ mod tests { } impl<'a> SeqVisitor for EnumSeqVisitor<'a> { - fn visit< - V: Visitor, - >(&mut self, visitor: &mut V) -> Result, V::Error> { + fn visit(&mut self, visitor: &mut V) -> Result, V::Error> + where V: Visitor, + { match self.state { 0 => { self.state += 1; @@ -1043,9 +1039,9 @@ mod tests { } impl<'a> MapVisitor for EnumMapVisitor<'a> { - fn visit< - V: Visitor, - >(&mut self, visitor: &mut V) -> Result, V::Error> { + fn visit(&mut self, visitor: &mut V) -> Result, V::Error> + where V: Visitor, + { match self.state { 0 => { self.state += 1;