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.
44 lines
1.3 KiB
Rust
44 lines
1.3 KiB
Rust
header! {
|
|
/// `Location` header, defined in
|
|
/// [RFC7231](http://tools.ietf.org/html/rfc7231#section-7.1.2)
|
|
///
|
|
/// The `Location` header field is used in some responses to refer to a
|
|
/// specific resource in relation to the response. The type of
|
|
/// relationship is defined by the combination of request method and
|
|
/// status code semantics.
|
|
///
|
|
/// # ABNF
|
|
/// ```plain
|
|
/// Location = URI-reference
|
|
/// ```
|
|
///
|
|
/// # Example values
|
|
/// * `/People.html#tim`
|
|
/// * `http://www.example.net/index.html`
|
|
///
|
|
/// # Examples
|
|
/// ```
|
|
/// use hyper::header::{Headers, Location};
|
|
///
|
|
/// let mut headers = Headers::new();
|
|
/// headers.set(Location::new("/People.html#tim"));
|
|
/// ```
|
|
/// ```
|
|
/// use hyper::header::{Headers, Location};
|
|
///
|
|
/// let mut headers = Headers::new();
|
|
/// headers.set(Location::new("http://www.example.com/index.html"));
|
|
/// ```
|
|
// TODO: Use URL
|
|
(Location, "Location") => Cow[str]
|
|
|
|
test_location {
|
|
// Testcase from RFC
|
|
test_header!(test1, vec![b"/People.html#tim"]);
|
|
test_header!(test2, vec![b"http://www.example.net/index.html"]);
|
|
}
|
|
|
|
}
|
|
|
|
bench_header!(bench, Location, { vec![b"http://foo.com/hello:3000".to_vec()] });
|