feat: impl ToHeader for all typed headers #285
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 adds a
to_header(self) -> Result<(HeaderName, HeaderValue)>
for every Typed header, as well as anything that canTryInto
a(HeaderName, HeaderValue)
pair.This should make typed headers nice to use with builds such as Surf's
RequestBuilder
, where.header(name, value)
could be changed to.header(ToHeader)
and also still work with a raw tuple.I'm not 100% happy with this though - notably to have atrait like this either we need it to be consuming (i.e. consume a typed header) or it has to clone if a tuple is passed.
An alternative would be to have every header
impl Into<(HeaderName, HeaderValue)>
...This also uncovers some unpleasantness with the current typed headers - not all of the implement the same methods, one mutates in
.value()
, some returnString
orResult<String>
instead ofHeaderValue
, one didn't implementname()
either.I think we should probably consider rolling that all into a trait.