Condense the deref impls
This commit is contained in:
parent
f28abe8fde
commit
f45b83f0c1
@ -302,87 +302,34 @@ map_impl!(HashMap<K: Eq + Hash, V, H: BuildHasher>);
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
impl<'a, T: ?Sized> Serialize for &'a T
|
macro_rules! deref_impl {
|
||||||
where
|
($($desc:tt)+) => {
|
||||||
T: Serialize,
|
impl $($desc)+ {
|
||||||
{
|
#[inline]
|
||||||
#[inline]
|
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
where
|
||||||
where
|
S: Serializer,
|
||||||
S: Serializer,
|
{
|
||||||
{
|
(**self).serialize(serializer)
|
||||||
(**self).serialize(serializer)
|
}
|
||||||
}
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, T: ?Sized> Serialize for &'a mut T
|
deref_impl!(<'a, T: ?Sized> Serialize for &'a T where T: Serialize);
|
||||||
where
|
deref_impl!(<'a, T: ?Sized> Serialize for &'a mut T where T: Serialize);
|
||||||
T: Serialize,
|
|
||||||
{
|
|
||||||
#[inline]
|
|
||||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
|
||||||
where
|
|
||||||
S: Serializer,
|
|
||||||
{
|
|
||||||
(**self).serialize(serializer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(any(feature = "std", feature = "alloc"))]
|
#[cfg(any(feature = "std", feature = "alloc"))]
|
||||||
impl<T: ?Sized> Serialize for Box<T>
|
deref_impl!(<T: ?Sized> Serialize for Box<T> where T: Serialize);
|
||||||
where
|
|
||||||
T: Serialize,
|
|
||||||
{
|
|
||||||
#[inline]
|
|
||||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
|
||||||
where
|
|
||||||
S: Serializer,
|
|
||||||
{
|
|
||||||
(**self).serialize(serializer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
|
#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
|
||||||
impl<T> Serialize for Rc<T>
|
deref_impl!(<T> Serialize for Rc<T> where T: Serialize);
|
||||||
where
|
|
||||||
T: Serialize,
|
|
||||||
{
|
|
||||||
#[inline]
|
|
||||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
|
||||||
where
|
|
||||||
S: Serializer,
|
|
||||||
{
|
|
||||||
(**self).serialize(serializer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
|
#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
|
||||||
impl<T> Serialize for Arc<T>
|
deref_impl!(<T> Serialize for Arc<T> where T: Serialize);
|
||||||
where
|
|
||||||
T: Serialize,
|
|
||||||
{
|
|
||||||
#[inline]
|
|
||||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
|
||||||
where
|
|
||||||
S: Serializer,
|
|
||||||
{
|
|
||||||
(**self).serialize(serializer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(any(feature = "std", feature = "collections"))]
|
#[cfg(any(feature = "std", feature = "collections"))]
|
||||||
impl<'a, T: ?Sized> Serialize for Cow<'a, T>
|
deref_impl!(<'a, T: ?Sized> Serialize for Cow<'a, T> where T: Serialize + ToOwned);
|
||||||
where
|
|
||||||
T: Serialize + ToOwned,
|
|
||||||
{
|
|
||||||
#[inline]
|
|
||||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
|
||||||
where
|
|
||||||
S: Serializer,
|
|
||||||
{
|
|
||||||
(**self).serialize(serializer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user