Skip to content

Commit

Permalink
Merge pull request #2821 from dtolnay/clos
Browse files Browse the repository at this point in the history
Eliminate closures capturing needlessly many type parameters
  • Loading branch information
dtolnay authored Sep 6, 2024
2 parents 89c4b02 + 1d7b009 commit c82f258
Showing 1 changed file with 20 additions and 7 deletions.
27 changes: 20 additions & 7 deletions serde/src/private/de.rs
Original file line number Diff line number Diff line change
Expand Up @@ -476,14 +476,16 @@ mod content {
where
D: Deserializer<'de>,
{
Deserialize::deserialize(deserializer).map(|v| Content::Some(Box::new(v)))
let v = tri!(Deserialize::deserialize(deserializer));
Ok(Content::Some(Box::new(v)))
}

fn visit_newtype_struct<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
where
D: Deserializer<'de>,
{
Deserialize::deserialize(deserializer).map(|v| Content::Newtype(Box::new(v)))
let v = tri!(Deserialize::deserialize(deserializer));
Ok(Content::Newtype(Box::new(v)))
}

fn visit_seq<V>(self, mut visitor: V) -> Result<Self::Value, V::Error>
Expand Down Expand Up @@ -1113,9 +1115,13 @@ mod content {
V: Visitor<'de>,
E: de::Error,
{
let map = content
.into_iter()
.map(|(k, v)| (ContentDeserializer::new(k), ContentDeserializer::new(v)));
fn content_deserializer_pair<'de, E>(
(k, v): (Content<'de>, Content<'de>),
) -> (ContentDeserializer<'de, E>, ContentDeserializer<'de, E>) {
(ContentDeserializer::new(k), ContentDeserializer::new(v))
}

let map = content.into_iter().map(content_deserializer_pair);
let mut map_visitor = MapDeserializer::new(map);
let value = tri!(visitor.visit_map(&mut map_visitor));
tri!(map_visitor.end());
Expand Down Expand Up @@ -1709,12 +1715,19 @@ mod content {
V: Visitor<'de>,
E: de::Error,
{
let map = content.iter().map(|(k, v)| {
fn content_ref_deserializer_pair<'a, 'de, E>(
(k, v): &'a (Content<'de>, Content<'de>),
) -> (
ContentRefDeserializer<'a, 'de, E>,
ContentRefDeserializer<'a, 'de, E>,
) {
(
ContentRefDeserializer::new(k),
ContentRefDeserializer::new(v),
)
});
}

let map = content.iter().map(content_ref_deserializer_pair);
let mut map_visitor = MapDeserializer::new(map);
let value = tri!(visitor.visit_map(&mut map_visitor));
tri!(map_visitor.end());
Expand Down

0 comments on commit c82f258

Please sign in to comment.