Merge pull request #956 from sfackler/int-field

Support deserialization of struct keys from integers
This commit is contained in:
David Tolnay 2017-06-17 18:26:45 -07:00 committed by GitHub
commit b37d47c987
2 changed files with 25 additions and 19 deletions

View File

@ -1386,7 +1386,6 @@ fn deserialize_identifier(
"field identifier" "field identifier"
}; };
let visit_index = if is_variant {
let variant_indices = 0u32..; let variant_indices = 0u32..;
let fallthrough_msg = format!("variant index 0 <= i < {}", fields.len()); let fallthrough_msg = format!("variant index 0 <= i < {}", fields.len());
let visit_index = quote! { let visit_index = quote! {
@ -1403,10 +1402,6 @@ fn deserialize_identifier(
} }
} }
}; };
Some(visit_index)
} else {
None
};
let bytes_to_str = if fallthrough.is_some() { let bytes_to_str = if fallthrough.is_some() {
None None

View File

@ -605,6 +605,17 @@ declare_tests! {
Token::StructEnd, Token::StructEnd,
], ],
} }
test_struct_integer_keys {
Struct { a: 1, b: 2, c: 0 } => &[
Token::Struct { name: "Struct", len: 2 },
Token::U32(0),
Token::I32(1),
Token::U32(1),
Token::I32(2),
Token::StructEnd,
],
}
test_enum_unit { test_enum_unit {
Enum::Unit => &[ Enum::Unit => &[
Token::UnitVariant { name: "Enum", variant: "Unit" }, Token::UnitVariant { name: "Enum", variant: "Unit" },