Simplify serde_as
handling around Option
s
#470
Merged
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.
Using
#[serde_as]
on a field of typeOption
changes the behavior, in that the field can no longer be missing.This often times was unexpected and lead to confusion (e.g., #183, #185, #311, #417).
Now if both the field and the transformation type are
Option
the#[serde(default)]
attribute is added.Option
s are identified by exact text matches and these variants are supported:Option
std::option::Option
, with or without leading::
core::option::Option
, with or without leading::
If a
default
attribute already exists nothing happens. This new behavior can be suppressed by using#[serde_as(no_default)]
on the field. If the transformation type is notOption
, e.g., likeNoneAsEmptyString
, nothing happens either.Closes #185