diff options
Diffstat (limited to 'src/ser/pair.rs')
-rw-r--r-- | src/ser/pair.rs | 146 |
1 files changed, 20 insertions, 126 deletions
diff --git a/src/ser/pair.rs b/src/ser/pair.rs index 3d91637..743b3dd 100644 --- a/src/ser/pair.rs +++ b/src/ser/pair.rs @@ -2,6 +2,7 @@ use ser::Error; use ser::key::KeySink; use ser::part::PartSerializer; use ser::value::ValueSink; +use ser::void::VoidSerializer; use serde::ser; use std::borrow::Cow; use std::mem; @@ -29,13 +30,13 @@ impl<'target, Target> ser::Serializer for PairSerializer<'target, Target> { type Ok = (); type Error = Error; - type SerializeSeq = Self; + type SerializeSeq = VoidSerializer<()>; type SerializeTuple = Self; - type SerializeTupleStruct = Self; - type SerializeTupleVariant = Self; - type SerializeMap = Self; - type SerializeStruct = Self; - type SerializeStructVariant = Self; + type SerializeTupleStruct = VoidSerializer<()>; + type SerializeTupleVariant = VoidSerializer<()>; + type SerializeMap = VoidSerializer<()>; + type SerializeStruct = VoidSerializer<()>; + type SerializeStructVariant = VoidSerializer<()>; fn serialize_bool(self, _v: bool) -> Result<(), Error> { Err(Error::unsupported_pair()) @@ -137,11 +138,15 @@ impl<'target, Target> ser::Serializer for PairSerializer<'target, Target> value.serialize(self) } - fn serialize_seq(self, _len: Option<usize>) -> Result<Self, Error> { + fn serialize_seq(self, + _len: Option<usize>) + -> Result<VoidSerializer<()>, Error> { Err(Error::unsupported_pair()) } - fn serialize_seq_fixed_size(self, _len: usize) -> Result<Self, Error> { + fn serialize_seq_fixed_size(self, + _len: usize) + -> Result<VoidSerializer<()>, Error> { Err(Error::unsupported_pair()) } @@ -156,7 +161,7 @@ impl<'target, Target> ser::Serializer for PairSerializer<'target, Target> fn serialize_tuple_struct(self, _name: &'static str, _len: usize) - -> Result<Self, Error> { + -> Result<VoidSerializer<()>, Error> { Err(Error::unsupported_pair()) } @@ -165,18 +170,20 @@ impl<'target, Target> ser::Serializer for PairSerializer<'target, Target> _variant_index: usize, _variant: &'static str, _len: usize) - -> Result<Self, Error> { + -> Result<VoidSerializer<()>, Error> { Err(Error::unsupported_pair()) } - fn serialize_map(self, _len: Option<usize>) -> Result<Self, Error> { + fn serialize_map(self, + _len: Option<usize>) + -> Result<VoidSerializer<()>, Error> { Err(Error::unsupported_pair()) } fn serialize_struct(self, _name: &'static str, _len: usize) - -> Result<Self, Error> { + -> Result<VoidSerializer<()>, Error> { Err(Error::unsupported_pair()) } @@ -185,28 +192,11 @@ impl<'target, Target> ser::Serializer for PairSerializer<'target, Target> _variant_index: usize, _variant: &'static str, _len: usize) - -> Result<Self, Error> { + -> Result<VoidSerializer<()>, Error> { Err(Error::unsupported_pair()) } } -impl<'target, Target> ser::SerializeSeq for PairSerializer<'target, Target> - where Target: 'target + UrlEncodedTarget, -{ - type Ok = (); - type Error = Error; - - fn serialize_element<T: ?Sized + ser::Serialize>(&mut self, - _value: &T) - -> Result<(), Error> { - unreachable!() - } - - fn end(self) -> Result<(), Error> { - unreachable!() - } -} - impl<'target, Target> ser::SerializeTuple for PairSerializer<'target, Target> where Target: 'target + UrlEncodedTarget, { @@ -251,102 +241,6 @@ impl<'target, Target> ser::SerializeTuple for PairSerializer<'target, Target> } } -impl<'target, Target> ser::SerializeTupleStruct - for PairSerializer<'target, Target> - where Target: 'target + UrlEncodedTarget, -{ - type Ok = (); - type Error = Error; - - fn serialize_field<T: ?Sized + ser::Serialize>(&mut self, - _value: &T) - -> Result<(), Error> { - unreachable!() - } - - fn end(self) -> Result<(), Error> { - unreachable!() - } -} - -impl<'target, Target> ser::SerializeTupleVariant - for PairSerializer<'target, Target> - where Target: 'target + UrlEncodedTarget, -{ - type Ok = (); - type Error = Error; - - fn serialize_field<T: ?Sized + ser::Serialize>(&mut self, - _value: &T) - -> Result<(), Error> { - unreachable!() - } - - fn end(self) -> Result<(), Error> { - unreachable!() - } -} - -impl<'target, Target> ser::SerializeMap for PairSerializer<'target, Target> - where Target: 'target + UrlEncodedTarget, -{ - type Ok = (); - type Error = Error; - - fn serialize_key<T: ?Sized + ser::Serialize>(&mut self, - _key: &T) - -> Result<(), Error> { - unreachable!() - } - - fn serialize_value<T: ?Sized + ser::Serialize>(&mut self, - _value: &T) - -> Result<(), Error> { - unreachable!() - } - - fn end(self) -> Result<(), Error> { - unreachable!() - } -} - -impl<'target, Target> ser::SerializeStruct for PairSerializer<'target, Target> - where Target: 'target + UrlEncodedTarget, -{ - type Ok = (); - type Error = Error; - - fn serialize_field<T: ?Sized + ser::Serialize>(&mut self, - _key: &'static str, - _value: &T) - -> Result<(), Error> { - unreachable!() - } - - fn end(self) -> Result<(), Error> { - unreachable!() - } -} - -impl<'target, Target> ser::SerializeStructVariant - for PairSerializer<'target, Target> - where Target: 'target + UrlEncodedTarget, -{ - type Ok = (); - type Error = Error; - - fn serialize_field<T: ?Sized + ser::Serialize>(&mut self, - _key: &'static str, - _value: &T) - -> Result<(), Error> { - unreachable!() - } - - fn end(self) -> Result<(), Error> { - unreachable!() - } -} - enum PairState { WaitingForKey, WaitingForValue { key: Cow<'static, str> }, |