|
138 | 138 |
|
139 | 139 | - ##### `#[serde(variant_identifier)]` {#variant_identifier} |
140 | 140 |
|
141 | | - Use an identifier representation for this enum. This can only be applied to |
142 | | - enums that are C-like (containing only unit variants), and forces them to |
143 | | - always be represented as strings, regardless of the underlying data format's |
144 | | - representation of enums. |
| 141 | + Deserialize either a string or an integer, depending on which one the data |
| 142 | + format uses as its representation of externally tagged enum variant tags. |
| 143 | + Generally human-readable formats would represent variants using their string |
| 144 | + name while compact binary formats would represent them using an integer index. |
| 145 | + This attribute can only be applied to an enum containing all unit variants. |
145 | 146 |
|
146 | 147 | - ##### `#[serde(field_identifier)]` {#field_identifier} |
147 | 148 |
|
148 | | - Identical to [`variant_identifier`], but also allows for the last variant to |
149 | | - be a newtype variant, which will be used if none of the other variants match |
150 | | - (similar to [`#[serde(other)]`]). Like `variant_identifier`, this forces the |
151 | | - enum to always be represented as a string, regardless of the underlying data |
152 | | - format's representation of enums. |
| 149 | + Deserialize either a string or an integer, depending on which one the data |
| 150 | + format uses as its representation of struct fields identifiers. This attribute |
| 151 | + differs from [`variant_identifier`] in that the final variant is permitted to |
| 152 | + be a newtype variant, which will be deserialized if the input matches none of |
| 153 | + the unit variants of this enum, similar to [`serde(other)`]. |
153 | 154 |
|
154 | 155 | [`variant_identifier`]: #variant_identifier |
155 | | - [`#[serde(other)`]: variant-attrs.md#other |
| 156 | + [`serde(other)`]: variant-attrs.md#other |
0 commit comments