| map.rs |
|
118204 |
- |
| mod.rs |
HTTP header types
The module provides [`HeaderName`], [`HeaderMap`], and a number of types
used for interacting with `HeaderMap`. These types allow representing both
HTTP/1 and HTTP/2 headers.
# `HeaderName`
The `HeaderName` type represents both standard header names as well as
custom header names. The type handles the case insensitive nature of header
names and is used as the key portion of `HeaderMap`. Header names are
normalized to lower case. In other words, when creating a `HeaderName` with
a string, even if upper case characters are included, when getting a string
representation of the `HeaderName`, it will be all lower case. This allows
for faster `HeaderMap` comparison operations.
The internal representation is optimized to efficiently handle the cases
most commonly encountered when working with HTTP. Standard header names are
special cased and are represented internally as an enum. Short custom
headers will be stored directly in the `HeaderName` struct and will not
incur any allocation overhead, however longer strings will require an
allocation for storage.
## Limitations
`HeaderName` has a max length of 32,768 for header names. Attempting to
parse longer names will result in a panic.
# `HeaderMap`
The [`HeaderMap`] type is a specialized
[multimap](<https://en.wikipedia.org/wiki/Multimap>) structure for storing
header names and values. It is designed specifically for efficient
manipulation of HTTP headers. It supports multiple values per header name
and provides specialized APIs for insertion, retrieval, and iteration.
[*See also the `HeaderMap` type.*](HeaderMap) |
4124 |
- |
| name.rs |
|
77124 |
- |
| value.rs |
|
20505 |
- |