From e1c1719b844bc01e531dba876cdc709dd9a73c47 Mon Sep 17 00:00:00 2001 From: Alexandre Courbot Date: Thu, 22 Sep 2022 13:42:12 +0900 Subject: [PATCH] serde_keyvalue: remove enum wrapper This wrapper type is useless as we can just implement the access traits on KeyValueDeserializer directly. BUG=b:218223240 TEST=cargo test -p serde_keyvalue Change-Id: I5013b3fea2f0a2febf182a2fd42037d1cbdbe737 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3915037 Commit-Queue: Daniel Verkamp Reviewed-by: Daniel Verkamp Auto-Submit: Alexandre Courbot --- serde_keyvalue/src/key_values.rs | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/serde_keyvalue/src/key_values.rs b/serde_keyvalue/src/key_values.rs index 3eff40e5c4..4243f0803b 100644 --- a/serde_keyvalue/src/key_values.rs +++ b/serde_keyvalue/src/key_values.rs @@ -394,15 +394,7 @@ impl<'de> de::MapAccess<'de> for KeyValueDeserializer<'de> { } } -struct Enum<'a, 'de: 'a>(&'a mut KeyValueDeserializer<'de>); - -impl<'a, 'de> Enum<'a, 'de> { - fn new(de: &'a mut KeyValueDeserializer<'de>) -> Self { - Self(de) - } -} - -impl<'a, 'de> de::EnumAccess<'de> for Enum<'a, 'de> { +impl<'a, 'de> de::EnumAccess<'de> for &'a mut KeyValueDeserializer<'de> { type Error = ParseError; type Variant = Self; @@ -410,12 +402,12 @@ impl<'a, 'de> de::EnumAccess<'de> for Enum<'a, 'de> { where V: de::DeserializeSeed<'de>, { - let val = seed.deserialize(&mut *self.0)?; + let val = seed.deserialize(&mut *self)?; Ok((val, self)) } } -impl<'a, 'de> de::VariantAccess<'de> for Enum<'a, 'de> { +impl<'a, 'de> de::VariantAccess<'de> for &'a mut KeyValueDeserializer<'de> { type Error = ParseError; fn unit_variant(self) -> Result<()> { @@ -699,7 +691,7 @@ impl<'de, 'a> de::Deserializer<'de> for &'a mut KeyValueDeserializer<'de> { where V: serde::de::Visitor<'de>, { - visitor.visit_enum(Enum::new(self)) + visitor.visit_enum(self) } fn deserialize_identifier(self, visitor: V) -> Result