refactor(header): make some headers more allocator friendly

Change the internal implementation of some simple headers to make them
more allocator friendly. Also add a constructor method to allow changing
the implementation in the future again.

The headers are:

- Location
- Referrer
- Server
- UserAgent

This change was suggested in [#1104].

BREAKING CHANGES:
- Old code that creates the header structs directly will stop working.
- It's not possible to implement DerefMut for a Cow<'static,str>. Code
that needs to modify header after creation will stop working.
This commit is contained in:
hag
2017-04-08 02:41:04 +02:00
parent 5c1cfa2bce
commit c8d5bf5cc8
6 changed files with 55 additions and 12 deletions

View File

@@ -22,10 +22,10 @@ header! {
/// use hyper::header::{Headers, Server};
///
/// let mut headers = Headers::new();
/// headers.set(Server("hyper/0.5.2".to_owned()));
/// headers.set(Server::new("hyper/0.5.2"));
/// ```
// TODO: Maybe parse as defined in the spec?
(Server, "Server") => [String]
(Server, "Server") => Cow[str]
test_server {
// Testcase from RFC