From 80b2f5f9e11af4e9f7d1b53b45b15c73720eb84c Mon Sep 17 00:00:00 2001 From: Mingun Date: Fri, 6 Jun 2025 10:34:16 +0500 Subject: [PATCH 1/2] Remove `actually_private::T` It just makes life harder in some cases without any benefits --- serde/src/de/mod.rs | 1 - serde/src/lib.rs | 5 ----- serde/src/private/de.rs | 15 +++------------ 3 files changed, 3 insertions(+), 18 deletions(-) diff --git a/serde/src/de/mod.rs b/serde/src/de/mod.rs index b2cc64c8..e3e98e19 100644 --- a/serde/src/de/mod.rs +++ b/serde/src/de/mod.rs @@ -1228,7 +1228,6 @@ pub trait Deserializer<'de>: Sized { #[doc(hidden)] fn __deserialize_content( self, - _: crate::actually_private::T, visitor: V, ) -> Result, Self::Error> where diff --git a/serde/src/lib.rs b/serde/src/lib.rs index 84b5cd7e..0341ff28 100644 --- a/serde/src/lib.rs +++ b/serde/src/lib.rs @@ -340,8 +340,3 @@ extern crate serde_derive; #[cfg(feature = "serde_derive")] #[cfg_attr(docsrs, doc(cfg(feature = "derive")))] pub use serde_derive::{Deserialize, Serialize}; - -#[cfg(all(not(no_serde_derive), any(feature = "std", feature = "alloc")))] -mod actually_private { - pub struct T; -} diff --git a/serde/src/private/de.rs b/serde/src/private/de.rs index af5878bb..62a76d12 100644 --- a/serde/src/private/de.rs +++ b/serde/src/private/de.rs @@ -208,7 +208,6 @@ mod content { use crate::lib::*; - use crate::actually_private; use crate::de::value::{MapDeserializer, SeqDeserializer}; use crate::de::{ self, size_hint, Deserialize, DeserializeSeed, Deserializer, EnumAccess, Expected, @@ -298,7 +297,7 @@ mod content { // Untagged and internally tagged enums are only supported in // self-describing formats. let visitor = ContentVisitor { value: PhantomData }; - deserializer.__deserialize_content(actually_private::T, visitor) + deserializer.__deserialize_content(visitor) } } @@ -1498,11 +1497,7 @@ mod content { visitor.visit_unit() } - fn __deserialize_content( - self, - _: actually_private::T, - visitor: V, - ) -> Result, Self::Error> + fn __deserialize_content(self, visitor: V) -> Result, Self::Error> where V: Visitor<'de, Value = Content<'de>>, { @@ -2091,11 +2086,7 @@ mod content { visitor.visit_unit() } - fn __deserialize_content( - self, - _: actually_private::T, - visitor: V, - ) -> Result, Self::Error> + fn __deserialize_content(self, visitor: V) -> Result, Self::Error> where V: Visitor<'de, Value = Content<'de>>, { From ad6c54857373ca92f6ff6d8eddc8c1d0ec0158b9 Mon Sep 17 00:00:00 2001 From: Mingun Date: Fri, 6 Jun 2025 10:38:41 +0500 Subject: [PATCH 2/2] Use associated type in signature to not repeat concrete type --- serde/src/de/mod.rs | 5 +---- serde/src/private/de.rs | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/serde/src/de/mod.rs b/serde/src/de/mod.rs index e3e98e19..15e32cca 100644 --- a/serde/src/de/mod.rs +++ b/serde/src/de/mod.rs @@ -1226,10 +1226,7 @@ pub trait Deserializer<'de>: Sized { // Not public API. #[cfg(all(not(no_serde_derive), any(feature = "std", feature = "alloc")))] #[doc(hidden)] - fn __deserialize_content( - self, - visitor: V, - ) -> Result, Self::Error> + fn __deserialize_content(self, visitor: V) -> Result where V: Visitor<'de, Value = crate::__private::de::Content<'de>>, { diff --git a/serde/src/private/de.rs b/serde/src/private/de.rs index 62a76d12..34bfcb66 100644 --- a/serde/src/private/de.rs +++ b/serde/src/private/de.rs @@ -1497,7 +1497,7 @@ mod content { visitor.visit_unit() } - fn __deserialize_content(self, visitor: V) -> Result, Self::Error> + fn __deserialize_content(self, visitor: V) -> Result where V: Visitor<'de, Value = Content<'de>>, { @@ -2086,7 +2086,7 @@ mod content { visitor.visit_unit() } - fn __deserialize_content(self, visitor: V) -> Result, Self::Error> + fn __deserialize_content(self, visitor: V) -> Result where V: Visitor<'de, Value = Content<'de>>, {