diff options
Diffstat (limited to 'src/ser.rs')
-rw-r--r-- | src/ser.rs | 67 |
1 files changed, 31 insertions, 36 deletions
@@ -279,7 +279,7 @@ impl<'a, W: 'a + Write> QsSerializer<'a, W> { write!( self.writer, "{}{}={}", - amp.then_some("&").unwrap_or_default(), + if amp { "&" } else { "" }, key, percent_encode(value, QS_ENCODE_SET) .map(replace_space) @@ -294,16 +294,11 @@ impl<'a, W: 'a + Write> QsSerializer<'a, W> { fn write_unit(&mut self) -> Result<()> { let amp = !self.first.swap(false, Ordering::Relaxed); if let Some(ref key) = self.key { - write!( - self.writer, - "{}{}=", - amp.then_some("&").unwrap_or_default(), - key, - ) - .map_err(Error::from) + write!(self.writer, "{}{}=", if amp { "&" } else { "" }, key,).map_err(Error::from) + } else if amp { + write!(self.writer, "&").map_err(Error::from) } else { - // For top level unit types - write!(self.writer, "{}", amp.then_some("&").unwrap_or_default(),).map_err(Error::from) + Ok(()) } } @@ -463,12 +458,12 @@ pub struct QsSeq<'a, W: 'a + Write>(QsSerializer<'a, W>, usize); #[doc(hidden)] pub struct QsMap<'a, W: 'a + Write>(QsSerializer<'a, W>, Option<Cow<'a, str>>); -impl<'a, W: Write> ser::SerializeTuple for QsSeq<'a, W> { +impl<W: Write> ser::SerializeTuple for QsSeq<'_, W> { type Ok = (); type Error = Error; - fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<()> + fn serialize_element<T>(&mut self, value: &T) -> Result<()> where - T: ser::Serialize, + T: ser::Serialize + ?Sized, { let key = self.1.to_string(); self.1 += 1; @@ -482,12 +477,12 @@ impl<'a, W: Write> ser::SerializeTuple for QsSeq<'a, W> { } } -impl<'a, W: Write> ser::SerializeSeq for QsSeq<'a, W> { +impl<W: Write> ser::SerializeSeq for QsSeq<'_, W> { type Ok = (); type Error = Error; - fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<()> + fn serialize_element<T>(&mut self, value: &T) -> Result<()> where - T: ser::Serialize, + T: ser::Serialize + ?Sized, { let mut serializer = QsSerializer::new_from_ref(&mut self.0); serializer.extend_key(&self.1.to_string()); @@ -499,12 +494,12 @@ impl<'a, W: Write> ser::SerializeSeq for QsSeq<'a, W> { } } -impl<'a, W: Write> ser::SerializeStruct for QsSerializer<'a, W> { +impl<W: Write> ser::SerializeStruct for QsSerializer<'_, W> { type Ok = (); type Error = Error; - fn serialize_field<T: ?Sized>(&mut self, key: &'static str, value: &T) -> Result<()> + fn serialize_field<T>(&mut self, key: &'static str, value: &T) -> Result<()> where - T: ser::Serialize, + T: ser::Serialize + ?Sized, { let mut serializer = QsSerializer::new_from_ref(self); serializer.extend_key(key); @@ -515,13 +510,13 @@ impl<'a, W: Write> ser::SerializeStruct for QsSerializer<'a, W> { } } -impl<'a, W: Write> ser::SerializeStructVariant for QsSerializer<'a, W> { +impl<W: Write> ser::SerializeStructVariant for QsSerializer<'_, W> { type Ok = (); type Error = Error; - fn serialize_field<T: ?Sized>(&mut self, key: &'static str, value: &T) -> Result<()> + fn serialize_field<T>(&mut self, key: &'static str, value: &T) -> Result<()> where - T: ser::Serialize, + T: ser::Serialize + ?Sized, { let mut serializer = QsSerializer::new_from_ref(self); serializer.extend_key(key); @@ -533,13 +528,13 @@ impl<'a, W: Write> ser::SerializeStructVariant for QsSerializer<'a, W> { } } -impl<'a, W: Write> ser::SerializeTupleVariant for QsSeq<'a, W> { +impl<W: Write> ser::SerializeTupleVariant for QsSeq<'_, W> { type Ok = (); type Error = Error; - fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<()> + fn serialize_field<T>(&mut self, value: &T) -> Result<()> where - T: ser::Serialize, + T: ser::Serialize + ?Sized, { let mut serializer = QsSerializer::new_from_ref(&mut self.0); serializer.extend_key(&self.1.to_string()); @@ -552,13 +547,13 @@ impl<'a, W: Write> ser::SerializeTupleVariant for QsSeq<'a, W> { } } -impl<'a, W: Write> ser::SerializeTupleStruct for QsSeq<'a, W> { +impl<W: Write> ser::SerializeTupleStruct for QsSeq<'_, W> { type Ok = (); type Error = Error; - fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<()> + fn serialize_field<T>(&mut self, value: &T) -> Result<()> where - T: ser::Serialize, + T: ser::Serialize + ?Sized, { let mut serializer = QsSerializer::new_from_ref(&mut self.0); serializer.extend_key(&self.1.to_string()); @@ -571,21 +566,21 @@ impl<'a, W: Write> ser::SerializeTupleStruct for QsSeq<'a, W> { } } -impl<'a, W: Write> ser::SerializeMap for QsMap<'a, W> { +impl<W: Write> ser::SerializeMap for QsMap<'_, W> { type Ok = (); type Error = Error; - fn serialize_key<T: ?Sized>(&mut self, key: &T) -> Result<()> + fn serialize_key<T>(&mut self, key: &T) -> Result<()> where - T: ser::Serialize, + T: ser::Serialize + ?Sized, { self.1 = Some(Cow::from(key.serialize(StringSerializer)?)); Ok(()) } - fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<()> + fn serialize_value<T>(&mut self, value: &T) -> Result<()> where - T: ser::Serialize, + T: ser::Serialize + ?Sized, { let mut serializer = QsSerializer::new_from_ref(&mut self.0); if let Some(ref key) = self.1 { @@ -601,10 +596,10 @@ impl<'a, W: Write> ser::SerializeMap for QsMap<'a, W> { Ok(()) } - fn serialize_entry<K: ?Sized, V: ?Sized>(&mut self, key: &K, value: &V) -> Result<()> + fn serialize_entry<K, V>(&mut self, key: &K, value: &V) -> Result<()> where - K: ser::Serialize, - V: ser::Serialize, + K: ser::Serialize + ?Sized, + V: ser::Serialize + ?Sized, { let mut serializer = QsSerializer::new_from_ref(&mut self.0); serializer.extend_key(&key.serialize(StringSerializer)?); |