Better header handling #691
Merged
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.
worked on with @yoshuawuyts! 🎉
This PR introduces a few mechanisms which make it easier to handle headers.
In general, we provide rich high-level types that can be mapped to some set of headers. This is accomplished through the
AsHeaders
trait which allows a type to define an iterator over some set of(HeaderName, HeaderValue)
.As a convenience there is the
Header
trait which allows a type to specify itself as mapping of a type 1 to 1 to a header. This is provided since a 1 to 1 mapping is the most common case and so makes definitions a bit more straight forward.This change is largely internal facing (i.e., users won't really notice a difference). However, internally, the definition of how to turn a type into headers is much shorter and adding those headers to a request is a bit more succinct.