From 17642c3735e3a8474919284a15df94ccec9e4da6 Mon Sep 17 00:00:00 2001 From: Pouya Mobasher Behrouz Date: Mon, 7 Dec 2020 05:38:11 +0330 Subject: Support enum unit variants as map keys (#37) --- src/de/mod.rs | 13 ++++++++++++- src/ser.rs | 5 ++--- 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/de/mod.rs b/src/de/mod.rs index 3d8b508..62da6a5 100644 --- a/src/de/mod.rs +++ b/src/de/mod.rs @@ -654,6 +654,18 @@ impl<'de> de::Deserializer<'de> for ParsableStringDeserializer<'de> { self.0.into_deserializer().deserialize_any(visitor) } + fn deserialize_enum( + self, + _: &'static str, + _: &'static [&'static str], + visitor: V, + ) -> Result + where + V: de::Visitor<'de>, + { + visitor.visit_enum(LevelDeserializer(Level::Flat(self.0))) + } + forward_to_deserialize_any! { map struct @@ -670,7 +682,6 @@ impl<'de> de::Deserializer<'de> for ParsableStringDeserializer<'de> { tuple_struct identifier tuple - enum ignored_any } diff --git a/src/ser.rs b/src/ser.rs index 4fbacd9..50d3688 100644 --- a/src/ser.rs +++ b/src/ser.rs @@ -524,14 +524,13 @@ impl ser::Serializer for StringSerializer { Err(Error::Unsupported) } - /// Returns an error. fn serialize_unit_variant( self, _name: &'static str, _variant_index: u32, - _variant: &'static str, + variant: &'static str, ) -> Result { - Err(Error::Unsupported) + Ok(variant.to_string()) } /// Returns an error. -- cgit v1.2.3