mirror of
https://github.com/serde-rs/serde.git
synced 2025-10-01 06:51:39 +00:00

Unit variant of externally tagged enum cannot be deserialized from the string token by itself. It is ContentDeserializer + serde_test::Deserializer that makes this possible, because serde_test::Deserializer produces Content::Str() from Token::BorrowedStr() and ContentDeserializer produces unit variant from Content::Str(). The following tokens all produces Content::String(variant): - Token::String(variant) - Token::Str(variant) - Token::UnitVariant { variant, .. } Token::BorrowedStr(variant) produces Content::Str(variant) that was the real purpose to use it in test in #933. This actually makes this test testing `Content` rather than type itself. Correct way to represent enum one of: - [xxxVariant { .. }] - [Enum { .. }, xxxVariant { variant, .. }] - [Enum { .. }, String(variant), <variant content>] - [Enum { .. }, Str(variant), <variant content>] - [Enum { .. }, BorrowedStr(variant), <variant content>]