[rust] Fix generation for optional and nullable fields (double option pattern) #13177
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.
Solution to: #13174
Where a field is both nullable and not-required it will now be represented using the double optional pattern. This is useful for partial update APIs where ignoring a field and setting it to null are two very different things.
It also makes a technical correction to the unusual case where a field is both required and nullable, such that deserializing now requires the field to be present in the JSON (though it can be null).
Rust technical committee tags:
@frol (2017/07) @farcaller (2017/08) @richardwhiuk (2019/07) @paladinzh (2020/05)
For context, this feature is already supported in rust-server, however rust-server uses a special purpose utility crate. In the case of the Rust client I think it makes sense to use the general purpose serde extension serde_with.