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.
Before this PR, the handling of
allOf
was basically wrong. It worked in a small number of cases, but on the whole it was flawed in concept. Most of the time, it would result in astruct
with all subschemas embedded with a#[serde(flatten)]
directive. This was broken in many ways, but in particular becauseallOf
constructs are often used to augment, narrow, and expand other types.This PR instead "merges" the subschemas of an
allOf
construction. This results in many more types, but also (per our testing), types that compile and are usable which was often not the case previously.This implements much of what is discussed in #176, but doesn't include the
impl From
that issue imagines to go from the "merged" type to the component type (i.e. the type that appeared in theallOf
array).Fixes #315 and #370
In addition, there are several cleanups: adding
env_logger
tocargo-typify
, improved logs and docs, start of a schema validator for Values, etc.