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 fixes a long-standing bug in how
Alpha
andPreAlpha
are serialized. They used to be flattened to a map, which is fine in JSON but not in more expressive formats, such as RON. The replacement implementation will only handle a subset of possible values (structs, tuples and sequences), but they should be the most common ones. It should also be possible to extend it later.I have also taken the opportunity to add some helpful utility functions for serializing and de-serializing.
Closed Issues
Breaking Change
Technically breaking, since it changes the serialization format a bit, but the old behavior was buggy and not always usable. The serialized type and name for
Alpha
andPreAlpha
is now inherited from the color's type. So, for example,Srgba
will be serialized and de-serialized as anRgb
struct with an additionalalpha
field. Unit types get extended to newtypes, and newtypes get extended to tuples.