Skip to content

Commit

Permalink
Move ?Sized bounds into where-clauses
Browse files Browse the repository at this point in the history
This wasn't allowed in old versions of Rust when this code was originally written.
  • Loading branch information
dtolnay committed Jul 15, 2023
1 parent b36fcf9 commit f1a8060
Showing 1 changed file with 26 additions and 30 deletions.
56 changes: 26 additions & 30 deletions src/ser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ use std::fmt::{self, Display, Write};
/// Serialization can fail if `T`'s implementation of `Serialize` decides to
/// fail, if `T` contains a map with non-string keys, or if `T` attempts to
/// serialize an unsupported datatype such as an enum, tuple, or tuple struct.
pub fn to_string<T: ?Sized>(value: &T) -> Result<String, crate::Error>
pub fn to_string<T>(value: &T) -> Result<String, crate::Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
let mut dst = String::with_capacity(128);
value.serialize(&mut Serializer::new(&mut dst))?;
Expand Down Expand Up @@ -386,9 +386,9 @@ impl<'a, 'b> ser::Serializer for &'b mut Serializer<'a> {
Err(Error::UnsupportedNone)
}

fn serialize_some<T: ?Sized>(self, value: &T) -> Result<(), Self::Error>
fn serialize_some<T>(self, value: &T) -> Result<(), Self::Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
value.serialize(self)
}
Expand All @@ -410,26 +410,22 @@ impl<'a, 'b> ser::Serializer for &'b mut Serializer<'a> {
self.serialize_str(variant)
}

fn serialize_newtype_struct<T: ?Sized>(
self,
_name: &'static str,
value: &T,
) -> Result<(), Self::Error>
fn serialize_newtype_struct<T>(self, _name: &'static str, value: &T) -> Result<(), Self::Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
value.serialize(self)
}

fn serialize_newtype_variant<T: ?Sized>(
fn serialize_newtype_variant<T>(
self,
_name: &'static str,
_variant_index: u32,
_variant: &'static str,
_value: &T,
) -> Result<(), Self::Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
Err(Error::UnsupportedType)
}
Expand Down Expand Up @@ -505,9 +501,9 @@ impl<'a, 'b> ser::SerializeSeq for SerializeSeq<'a, 'b> {
type Ok = ();
type Error = Error;

fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
fn serialize_element<T>(&mut self, value: &T) -> Result<(), Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
value.serialize(&mut Serializer {
dst: &mut *self.ser.dst,
Expand Down Expand Up @@ -543,9 +539,9 @@ impl<'a, 'b> ser::SerializeTuple for SerializeSeq<'a, 'b> {
type Ok = ();
type Error = Error;

fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
fn serialize_element<T>(&mut self, value: &T) -> Result<(), Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
ser::SerializeSeq::serialize_element(self, value)
}
Expand All @@ -559,9 +555,9 @@ impl<'a, 'b> ser::SerializeTupleStruct for SerializeSeq<'a, 'b> {
type Ok = ();
type Error = Error;

fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
fn serialize_field<T>(&mut self, value: &T) -> Result<(), Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
ser::SerializeSeq::serialize_element(self, value)
}
Expand All @@ -575,17 +571,17 @@ impl<'a, 'b> ser::SerializeMap for SerializeTable<'a, 'b> {
type Ok = ();
type Error = Error;

fn serialize_key<T: ?Sized>(&mut self, input: &T) -> Result<(), Error>
fn serialize_key<T>(&mut self, input: &T) -> Result<(), Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
self.key = input.serialize(StringExtractor)?;
Ok(())
}

fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
fn serialize_value<T>(&mut self, value: &T) -> Result<(), Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
let res = value.serialize(&mut Serializer {
dst: &mut *self.ser.dst,
Expand Down Expand Up @@ -617,9 +613,9 @@ impl<'a, 'b> ser::SerializeStruct for SerializeTable<'a, 'b> {
type Ok = ();
type Error = Error;

fn serialize_field<T: ?Sized>(&mut self, key: &'static str, value: &T) -> Result<(), Error>
fn serialize_field<T>(&mut self, key: &'static str, value: &T) -> Result<(), Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
let res = value.serialize(&mut Serializer {
dst: &mut *self.ser.dst,
Expand Down Expand Up @@ -720,9 +716,9 @@ impl ser::Serializer for StringExtractor {
Err(Error::KeyNotString)
}

fn serialize_some<T: ?Sized>(self, _value: &T) -> Result<String, Self::Error>
fn serialize_some<T>(self, _value: &T) -> Result<String, Self::Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
Err(Error::KeyNotString)
}
Expand All @@ -744,26 +740,26 @@ impl ser::Serializer for StringExtractor {
Err(Error::KeyNotString)
}

fn serialize_newtype_struct<T: ?Sized>(
fn serialize_newtype_struct<T>(
self,
_name: &'static str,
value: &T,
) -> Result<String, Self::Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
value.serialize(self)
}

fn serialize_newtype_variant<T: ?Sized>(
fn serialize_newtype_variant<T>(
self,
_name: &'static str,
_variant_index: u32,
_variant: &'static str,
_value: &T,
) -> Result<String, Self::Error>
where
T: Serialize,
T: ?Sized + Serialize,
{
Err(Error::KeyNotString)
}
Expand Down

0 comments on commit f1a8060

Please sign in to comment.