From a0b23cbf02cc1422a95367c0bea0f41d8605c78e Mon Sep 17 00:00:00 2001 From: David Ross Date: Tue, 4 Dec 2018 19:35:32 -0800 Subject: [PATCH] Accept integers variant encoding in Content This allows ContentDeserializer and ContentRefDeserializer to deserialize unsigned integers in deserialize_identifier, and furthermore allows enums inside untagged enums to be correctly decoded in formats which encode the enum variant as an integer. Fixes https://github.com/serde-rs/serde/issues/1437. --- serde/src/private/de.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/serde/src/private/de.rs b/serde/src/private/de.rs index f7219b2c..dab463d0 100644 --- a/serde/src/private/de.rs +++ b/serde/src/private/de.rs @@ -1419,6 +1419,10 @@ mod content { Content::Str(v) => visitor.visit_borrowed_str(v), Content::ByteBuf(v) => visitor.visit_byte_buf(v), Content::Bytes(v) => visitor.visit_borrowed_bytes(v), + Content::U8(v) => visitor.visit_u8(v), + Content::U16(v) => visitor.visit_u16(v), + Content::U32(v) => visitor.visit_u32(v), + Content::U64(v) => visitor.visit_u64(v), _ => Err(self.invalid_type(&visitor)), } } @@ -2121,6 +2125,10 @@ mod content { Content::Str(v) => visitor.visit_borrowed_str(v), Content::ByteBuf(ref v) => visitor.visit_bytes(v), Content::Bytes(v) => visitor.visit_borrowed_bytes(v), + Content::U8(v) => visitor.visit_u8(v), + Content::U16(v) => visitor.visit_u16(v), + Content::U32(v) => visitor.visit_u32(v), + Content::U64(v) => visitor.visit_u64(v), _ => Err(self.invalid_type(&visitor)), } }