http
http copied to clipboard
Implement non-failing builders for Request, Response and Uri.
Fixes #330. Replaces #442 , #448 , and #454 .
Creating a Request
, Response
, or Uri
with the builder pattern should not require handling errors unless opting in by using a try_
-method (which returns a Result<Builder>
, not a Builder
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 parts Scheme
, Authority
and PathAndQuery
can be added in any combination, and the build method is implemented for valid combinations only. Looking at the generated documentation for uri::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 the Builder2
, and a build method for four of them.