Fix hand-written enum variant deserializations to allow u64 discriminant#1888
Merged
dtolnay merged 1 commit intoserde-rs:masterfrom Sep 11, 2020
Merged
Conversation
Automatically generated enum variant deserializers allowed any integer type as the discriminant, but the hand-written ones for specific enum types such as Result or IpAddr only allowed types up to u32. This broke some non-human-readable deserializers for these enums, with deserializers that emit any integer type as a u64. Switch the visit_u32 methods to visit_u64 methods to allow discriminants to have any size up to a u64.
This was referenced Sep 11, 2020
Contributor
Author
|
Thanks for the quick review and merge, and the 1.0.116 release! |
This was referenced Sep 11, 2020
This was referenced Mar 8, 2021
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automatically generated enum variant deserializers allowed any integer
type as the discriminant, but the hand-written ones for specific enum
types such as Result or IpAddr only allowed types up to u32. This broke
some non-human-readable deserializers for these enums, with
deserializers that emit any integer type as a u64. Switch the visit_u32
methods to visit_u64 methods to allow discriminants to have any size up
to a u64.