fix: properly handle deserialization from Reader #71
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.
The pattern "let s: &str = Deserialize::deserialize(deser)" used in multiple places is not ideal, as it generates errors when the deserializer uses an IO Reader and not a string. To fix this, implementing a visitor is preferred, as it gives the deserializer the choice of allocating or not a string.
To ensure the issue is fixed, the tests now deserialize both from a string and from a reader.
I haven't used the same fix for the integer/string deserialization for numbers. Using a Visitor is much more cumbersome as it would depend on each numeric type, and using a Cow type is enough to fix the issue.
Closes #55