Implement non-failing builders for Request, Response and Uri. #483
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.
Fixes #330. Replaces #442 , #448 , and #454 .
Creating a
Request
,Response
, orUri
with the builder pattern should not require handling errors unless opting in by using atry_
-method (which returns aResult<Builder>
, not aBuilder
with an internal error state).This is really a breaking change to the Builders, but rather than suggesting a breaking change directly, I introduce alternatives named
Builder2
. If this is accepted, the original Builder is deprecated, and in a later release Builder2 can be renamed back to Builder.The new
uri::Builder2
is generic on its contents, which starts out as the empty type()
. The partsScheme
,Authority
andPathAndQuery
can be added in any combination, and the build method is implemented for valid combinations only. Looking at the generated documentation foruri::Builder2
, it gets a bit repetitive, as the property and a try_property method for each of the three properties is repeated for each of the eight variants of theBuilder2
, and a build method for four of them.