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.
This introduces encode options in
Serde.Encode
and related functions. There are currently two encode options,ID
andIndex
. I reused the existingIndex
option and adjusted it to function both asSerdeOpt
andEncodeOpt
.The caller can now explicitly specify an ID and index when encoding an object, which overrides the default behavior of choosing the encoding function based on the type of the value being encoded. The primary motivation behind this is to support the encoding of dynamic data stored in a map by explicitly choosing the schema for encoding it. Besides that, it could also be used to register multiple schemas/encode functions for the same type and explicitly choose which one to use based on the ID.
It also fixes some minor bugs:
DecodeFn
,Decode
now returnsErrNotRegistered
DecodeNew
on a schema without an associated type it now returnsErrNotRegistered
instead of a panicRelated to the discussion in #453.