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.
Changes:
builder(default)
. The documentation implies this can be put on the struct instead of each field but in practice that requiresPackage: Default
which we probally don't want.PackageBuilder::new
method which takes all required fields and returns aPackageBuilder
. This is optional asPackageBuilder::default
does work it provides some extra safety to downstream users as they will get compile errors if required fields are added in a future major.One implication of adding
PackageBuilder::new
is that adding a new required field will requiring modifying thenew
method which is a breaking change requiring a major version. Technically in the old setup you could be add a non-required field without breaking the compliation of downstream crates due tonon_exhaustive
but in practice it would have been a breaking change to the runtime behavior so it would never have been okay anyway.Closes my comments in #158.