refactor(lib): update unicase to 2.0
BREAKING CHANGE: Some headers used `UniCase`, but now use `unicase::Ascii`. Upgrade code to `Ascii::new(s)`.
This commit is contained in:
@@ -32,7 +32,7 @@ tokio-core = "0.1.6"
|
||||
tokio-proto = "0.1"
|
||||
tokio-service = "0.1"
|
||||
tokio-io = "0.1"
|
||||
unicase = "1.0"
|
||||
unicase = "2.0"
|
||||
url = "1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use std::fmt::{self, Display};
|
||||
use std::str;
|
||||
use unicase::UniCase;
|
||||
use unicase;
|
||||
use header::{Header, Raw};
|
||||
|
||||
/// `Access-Control-Allow-Credentials` header, part of
|
||||
@@ -38,7 +38,7 @@ use header::{Header, Raw};
|
||||
#[derive(Clone, PartialEq, Debug)]
|
||||
pub struct AccessControlAllowCredentials;
|
||||
|
||||
const ACCESS_CONTROL_ALLOW_CREDENTIALS_TRUE: UniCase<&'static str> = UniCase("true");
|
||||
const ACCESS_CONTROL_ALLOW_CREDENTIALS_TRUE: &'static str = "true";
|
||||
|
||||
impl Header for AccessControlAllowCredentials {
|
||||
fn header_name() -> &'static str {
|
||||
@@ -56,7 +56,7 @@ impl Header for AccessControlAllowCredentials {
|
||||
// None. No big deal.
|
||||
str::from_utf8_unchecked(line)
|
||||
};
|
||||
if UniCase(text) == ACCESS_CONTROL_ALLOW_CREDENTIALS_TRUE {
|
||||
if unicase::eq_ascii(text, ACCESS_CONTROL_ALLOW_CREDENTIALS_TRUE) {
|
||||
return Ok(AccessControlAllowCredentials);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use unicase::UniCase;
|
||||
use unicase::Ascii;
|
||||
|
||||
header! {
|
||||
/// `Access-Control-Allow-Headers` header, part of
|
||||
@@ -24,11 +24,11 @@ header! {
|
||||
/// // extern crate unicase;
|
||||
///
|
||||
/// use hyper::header::{Headers, AccessControlAllowHeaders};
|
||||
/// use unicase::UniCase;
|
||||
/// use unicase::Ascii;
|
||||
///
|
||||
/// let mut headers = Headers::new();
|
||||
/// headers.set(
|
||||
/// AccessControlAllowHeaders(vec![UniCase("date".to_owned())])
|
||||
/// AccessControlAllowHeaders(vec![Ascii::new("date".to_owned())])
|
||||
/// );
|
||||
/// # }
|
||||
/// ```
|
||||
@@ -39,18 +39,18 @@ header! {
|
||||
/// // extern crate unicase;
|
||||
///
|
||||
/// use hyper::header::{Headers, AccessControlAllowHeaders};
|
||||
/// use unicase::UniCase;
|
||||
/// use unicase::Ascii;
|
||||
///
|
||||
/// let mut headers = Headers::new();
|
||||
/// headers.set(
|
||||
/// AccessControlAllowHeaders(vec![
|
||||
/// UniCase("accept-language".to_owned()),
|
||||
/// UniCase("date".to_owned()),
|
||||
/// Ascii::new("accept-language".to_owned()),
|
||||
/// Ascii::new("date".to_owned()),
|
||||
/// ])
|
||||
/// );
|
||||
/// # }
|
||||
/// ```
|
||||
(AccessControlAllowHeaders, "Access-Control-Allow-Headers") => (UniCase<String>)*
|
||||
(AccessControlAllowHeaders, "Access-Control-Allow-Headers") => (Ascii<String>)*
|
||||
|
||||
test_access_control_allow_headers {
|
||||
test_header!(test1, vec![b"accept-language, date"]);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use unicase::UniCase;
|
||||
use unicase::Ascii;
|
||||
|
||||
header! {
|
||||
/// `Access-Control-Expose-Headers` header, part of
|
||||
@@ -23,13 +23,13 @@ header! {
|
||||
/// // extern crate unicase;
|
||||
///
|
||||
/// use hyper::header::{Headers, AccessControlExposeHeaders};
|
||||
/// use unicase::UniCase;
|
||||
/// use unicase::Ascii;
|
||||
///
|
||||
/// let mut headers = Headers::new();
|
||||
/// headers.set(
|
||||
/// AccessControlExposeHeaders(vec![
|
||||
/// UniCase("etag".to_owned()),
|
||||
/// UniCase("content-length".to_owned())
|
||||
/// Ascii::new("etag".to_owned()),
|
||||
/// Ascii::new("content-length".to_owned())
|
||||
/// ])
|
||||
/// );
|
||||
/// # }
|
||||
@@ -41,18 +41,18 @@ header! {
|
||||
/// // extern crate unicase;
|
||||
///
|
||||
/// use hyper::header::{Headers, AccessControlExposeHeaders};
|
||||
/// use unicase::UniCase;
|
||||
/// use unicase::Ascii;
|
||||
///
|
||||
/// let mut headers = Headers::new();
|
||||
/// headers.set(
|
||||
/// AccessControlExposeHeaders(vec![
|
||||
/// UniCase("etag".to_owned()),
|
||||
/// UniCase("content-length".to_owned())
|
||||
/// Ascii::new("etag".to_owned()),
|
||||
/// Ascii::new("content-length".to_owned())
|
||||
/// ])
|
||||
/// );
|
||||
/// # }
|
||||
/// ```
|
||||
(AccessControlExposeHeaders, "Access-Control-Expose-Headers") => (UniCase<String>)*
|
||||
(AccessControlExposeHeaders, "Access-Control-Expose-Headers") => (Ascii<String>)*
|
||||
|
||||
test_access_control_expose_headers {
|
||||
test_header!(test1, vec![b"etag, content-length"]);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use unicase::UniCase;
|
||||
use unicase::Ascii;
|
||||
|
||||
header! {
|
||||
/// `Access-Control-Request-Headers` header, part of
|
||||
@@ -24,11 +24,11 @@ header! {
|
||||
/// // extern crate unicase;
|
||||
///
|
||||
/// use hyper::header::{Headers, AccessControlRequestHeaders};
|
||||
/// use unicase::UniCase;
|
||||
/// use unicase::Ascii;
|
||||
///
|
||||
/// let mut headers = Headers::new();
|
||||
/// headers.set(
|
||||
/// AccessControlRequestHeaders(vec![UniCase("date".to_owned())])
|
||||
/// AccessControlRequestHeaders(vec![Ascii::new("date".to_owned())])
|
||||
/// );
|
||||
/// # }
|
||||
/// ```
|
||||
@@ -39,18 +39,18 @@ header! {
|
||||
/// // extern crate unicase;
|
||||
///
|
||||
/// use hyper::header::{Headers, AccessControlRequestHeaders};
|
||||
/// use unicase::UniCase;
|
||||
/// use unicase::Ascii;
|
||||
///
|
||||
/// let mut headers = Headers::new();
|
||||
/// headers.set(
|
||||
/// AccessControlRequestHeaders(vec![
|
||||
/// UniCase("accept-language".to_owned()),
|
||||
/// UniCase("date".to_owned()),
|
||||
/// Ascii::new("accept-language".to_owned()),
|
||||
/// Ascii::new("date".to_owned()),
|
||||
/// ])
|
||||
/// );
|
||||
/// # }
|
||||
/// ```
|
||||
(AccessControlRequestHeaders, "Access-Control-Request-Headers") => (UniCase<String>)*
|
||||
(AccessControlRequestHeaders, "Access-Control-Request-Headers") => (Ascii<String>)*
|
||||
|
||||
test_access_control_request_headers {
|
||||
test_header!(test1, vec![b"accept-language, date"]);
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
use std::fmt::{self, Display};
|
||||
use std::str::FromStr;
|
||||
use unicase::UniCase;
|
||||
use unicase::Ascii;
|
||||
|
||||
pub use self::ConnectionOption::{KeepAlive, Close, ConnectionHeader};
|
||||
|
||||
const KEEP_ALIVE: UniCase<&'static str> = UniCase("keep-alive");
|
||||
const CLOSE: UniCase<&'static str> = UniCase("close");
|
||||
static KEEP_ALIVE: &'static str = "keep-alive";
|
||||
static CLOSE: &'static str = "close";
|
||||
|
||||
/// Values that can be in the `Connection` header.
|
||||
#[derive(Clone, PartialEq, Debug)]
|
||||
@@ -22,18 +22,18 @@ pub enum ConnectionOption {
|
||||
// TODO: it would be nice if these "Strings" could be stronger types, since
|
||||
// they are supposed to relate to other Header fields (which we have strong
|
||||
// types for).
|
||||
ConnectionHeader(UniCase<String>),
|
||||
ConnectionHeader(Ascii<String>),
|
||||
}
|
||||
|
||||
impl FromStr for ConnectionOption {
|
||||
type Err = ();
|
||||
fn from_str(s: &str) -> Result<ConnectionOption, ()> {
|
||||
if UniCase(s) == KEEP_ALIVE {
|
||||
if Ascii::new(s) == KEEP_ALIVE {
|
||||
Ok(KeepAlive)
|
||||
} else if UniCase(s) == CLOSE {
|
||||
} else if Ascii::new(s) == CLOSE {
|
||||
Ok(Close)
|
||||
} else {
|
||||
Ok(ConnectionHeader(UniCase(s.to_owned())))
|
||||
Ok(ConnectionHeader(Ascii::new(s.to_owned())))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -43,7 +43,7 @@ impl Display for ConnectionOption {
|
||||
f.write_str(match *self {
|
||||
KeepAlive => "keep-alive",
|
||||
Close => "close",
|
||||
ConnectionHeader(UniCase(ref s)) => s.as_ref()
|
||||
ConnectionHeader(ref s) => s.as_ref()
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -83,12 +83,12 @@ header! {
|
||||
/// // extern crate unicase;
|
||||
///
|
||||
/// use hyper::header::{Headers, Connection, ConnectionOption};
|
||||
/// use unicase::UniCase;
|
||||
/// use unicase::Ascii;
|
||||
///
|
||||
/// let mut headers = Headers::new();
|
||||
/// headers.set(
|
||||
/// Connection(vec![
|
||||
/// ConnectionOption::ConnectionHeader(UniCase("upgrade".to_owned())),
|
||||
/// ConnectionOption::ConnectionHeader(Ascii::new("upgrade".to_owned())),
|
||||
/// ])
|
||||
/// );
|
||||
/// # }
|
||||
@@ -124,7 +124,7 @@ bench_header!(header, Connection, { vec![b"authorization".to_vec()] });
|
||||
mod tests {
|
||||
use super::{Connection,ConnectionHeader};
|
||||
use header::Header;
|
||||
use unicase::UniCase;
|
||||
use unicase::Ascii;
|
||||
|
||||
fn parse_option(header: Vec<u8>) -> Connection {
|
||||
let val = header.into();
|
||||
@@ -137,7 +137,7 @@ mod tests {
|
||||
assert_eq!(Connection::close(),parse_option(b"close".to_vec()));
|
||||
assert_eq!(Connection::keep_alive(),parse_option(b"keep-alive".to_vec()));
|
||||
assert_eq!(Connection::keep_alive(),parse_option(b"Keep-Alive".to_vec()));
|
||||
assert_eq!(Connection(vec![ConnectionHeader(UniCase("upgrade".to_owned()))]),
|
||||
assert_eq!(Connection(vec![ConnectionHeader(Ascii::new("upgrade".to_owned()))]),
|
||||
parse_option(b"upgrade".to_vec()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
use language_tags::LanguageTag;
|
||||
use std::fmt;
|
||||
use unicase::UniCase;
|
||||
use unicase;
|
||||
|
||||
use header::{Header, Raw, parsing};
|
||||
use header::parsing::{parse_extended_value, http_percent_encode};
|
||||
@@ -102,9 +102,9 @@ impl Header for ContentDisposition {
|
||||
};
|
||||
|
||||
let mut cd = ContentDisposition {
|
||||
disposition: if UniCase(&*disposition) == UniCase("inline") {
|
||||
disposition: if unicase::eq_ascii(&*disposition, "inline") {
|
||||
DispositionType::Inline
|
||||
} else if UniCase(&*disposition) == UniCase("attachment") {
|
||||
} else if unicase::eq_ascii(&*disposition, "attachment") {
|
||||
DispositionType::Attachment
|
||||
} else {
|
||||
DispositionType::Ext(disposition.to_owned())
|
||||
@@ -128,11 +128,11 @@ impl Header for ContentDisposition {
|
||||
};
|
||||
|
||||
cd.parameters.push(
|
||||
if UniCase(&*key) == UniCase("filename") {
|
||||
if unicase::eq_ascii(&*key, "filename") {
|
||||
DispositionParam::Filename(
|
||||
Charset::Ext("UTF-8".to_owned()), None,
|
||||
val.trim_matches('"').as_bytes().to_owned())
|
||||
} else if UniCase(&*key) == UniCase("filename*") {
|
||||
} else if unicase::eq_ascii(&*key, "filename*") {
|
||||
let extended_value = try!(parse_extended_value(val));
|
||||
DispositionParam::Filename(extended_value.charset, extended_value.language_tag, extended_value.value)
|
||||
} else {
|
||||
@@ -164,7 +164,7 @@ impl fmt::Display for ContentDisposition {
|
||||
let mut use_simple_format: bool = false;
|
||||
if opt_lang.is_none() {
|
||||
if let Charset::Ext(ref ext) = *charset {
|
||||
if UniCase(&**ext) == UniCase("utf-8") {
|
||||
if unicase::eq_ascii(&**ext, "utf-8") {
|
||||
use_simple_format = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::fmt;
|
||||
use std::str;
|
||||
|
||||
use unicase::UniCase;
|
||||
use unicase;
|
||||
|
||||
use header::{Header, Raw};
|
||||
|
||||
@@ -26,8 +26,6 @@ pub enum Expect {
|
||||
Continue
|
||||
}
|
||||
|
||||
const EXPECT_CONTINUE: UniCase<&'static str> = UniCase("100-continue");
|
||||
|
||||
impl Header for Expect {
|
||||
fn header_name() -> &'static str {
|
||||
static NAME: &'static str = "Expect";
|
||||
@@ -44,7 +42,7 @@ impl Header for Expect {
|
||||
// None. No big deal.
|
||||
str::from_utf8_unchecked(line)
|
||||
};
|
||||
if UniCase(text) == EXPECT_CONTINUE {
|
||||
if unicase::eq_ascii(text, "100-continue") {
|
||||
Ok(Expect::Continue)
|
||||
} else {
|
||||
Err(::Error::Header)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::fmt;
|
||||
use std::str::{self, FromStr};
|
||||
|
||||
use unicase::UniCase;
|
||||
use unicase;
|
||||
|
||||
use header::{Header, Raw, parsing};
|
||||
|
||||
@@ -85,13 +85,13 @@ impl FromStr for StrictTransportSecurity {
|
||||
fn from_str(s: &str) -> ::Result<StrictTransportSecurity> {
|
||||
s.split(';')
|
||||
.map(str::trim)
|
||||
.map(|sub| if UniCase(sub) == UniCase("includeSubdomains") {
|
||||
.map(|sub| if unicase::eq_ascii(sub, "includeSubdomains") {
|
||||
Ok(Directive::IncludeSubdomains)
|
||||
} else {
|
||||
let mut sub = sub.splitn(2, '=');
|
||||
match (sub.next(), sub.next()) {
|
||||
(Some(left), Some(right))
|
||||
if UniCase(left.trim()) == UniCase("max-age") => {
|
||||
if unicase::eq_ascii(left.trim(), "max-age") => {
|
||||
right
|
||||
.trim()
|
||||
.trim_matches('"')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use std::fmt::{self, Display};
|
||||
use std::str::FromStr;
|
||||
use unicase::UniCase;
|
||||
use unicase;
|
||||
|
||||
header! {
|
||||
/// `Upgrade` header, defined in [RFC7230](http://tools.ietf.org/html/rfc7230#section-6.7)
|
||||
@@ -99,7 +99,7 @@ impl FromStr for ProtocolName {
|
||||
"TLS" => ProtocolName::Tls,
|
||||
"h2c" => ProtocolName::H2c,
|
||||
_ => {
|
||||
if UniCase(s) == UniCase("websocket") {
|
||||
if unicase::eq_ascii(s, "websocket") {
|
||||
ProtocolName::WebSocket
|
||||
} else {
|
||||
ProtocolName::Unregistered(s.to_owned())
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use unicase::UniCase;
|
||||
use unicase::Ascii;
|
||||
|
||||
header! {
|
||||
/// `Vary` header, defined in [RFC7231](https://tools.ietf.org/html/rfc7231#section-7.1.4)
|
||||
@@ -34,18 +34,18 @@ header! {
|
||||
/// // extern crate unicase;
|
||||
///
|
||||
/// use hyper::header::{Headers, Vary};
|
||||
/// use unicase::UniCase;
|
||||
/// use unicase::Ascii;
|
||||
///
|
||||
/// let mut headers = Headers::new();
|
||||
/// headers.set(
|
||||
/// Vary::Items(vec![
|
||||
/// UniCase("accept-encoding".to_owned()),
|
||||
/// UniCase("accept-language".to_owned()),
|
||||
/// Ascii::new("accept-encoding".to_owned()),
|
||||
/// Ascii::new("accept-language".to_owned()),
|
||||
/// ])
|
||||
/// );
|
||||
/// # }
|
||||
/// ```
|
||||
(Vary, "Vary") => {Any / (UniCase<String>)+}
|
||||
(Vary, "Vary") => {Any / (Ascii<String>)+}
|
||||
|
||||
test_vary {
|
||||
test_header!(test1, vec![b"accept-encoding, accept-language"]);
|
||||
|
||||
@@ -80,7 +80,7 @@ use std::borrow::{Cow, ToOwned};
|
||||
use std::iter::{FromIterator, IntoIterator};
|
||||
use std::{mem, fmt};
|
||||
|
||||
use unicase::UniCase;
|
||||
use unicase::Ascii;
|
||||
|
||||
use self::internals::{Item, VecMap, Entry};
|
||||
use self::sealed::{GetType, HeaderClone};
|
||||
@@ -329,7 +329,7 @@ macro_rules! literals {
|
||||
match s.len() {
|
||||
$($len => {
|
||||
$(
|
||||
if UniCase(<$header>::header_name()) == s {
|
||||
if Ascii::new(<$header>::header_name()) == Ascii::new(s) {
|
||||
return Cow::Borrowed(<$header>::header_name());
|
||||
}
|
||||
)+
|
||||
@@ -390,19 +390,19 @@ impl Headers {
|
||||
/// The field is determined by the type of the value being set.
|
||||
pub fn set<H: Header>(&mut self, value: H) {
|
||||
trace!("Headers.set( {:?}, {:?} )", header_name::<H>(), HeaderValueString(&value));
|
||||
self.data.insert(HeaderName(UniCase(Cow::Borrowed(header_name::<H>()))),
|
||||
self.data.insert(HeaderName(Ascii::new(Cow::Borrowed(header_name::<H>()))),
|
||||
Item::new_typed(Box::new(value)));
|
||||
}
|
||||
|
||||
/// Get a reference to the header field's value, if it exists.
|
||||
pub fn get<H: Header>(&self) -> Option<&H> {
|
||||
self.data.get(&HeaderName(UniCase(Cow::Borrowed(header_name::<H>()))))
|
||||
self.data.get(&HeaderName(Ascii::new(Cow::Borrowed(header_name::<H>()))))
|
||||
.and_then(Item::typed::<H>)
|
||||
}
|
||||
|
||||
/// Get a mutable reference to the header field's value, if it exists.
|
||||
pub fn get_mut<H: Header>(&mut self) -> Option<&mut H> {
|
||||
self.data.get_mut(&HeaderName(UniCase(Cow::Borrowed(header_name::<H>()))))
|
||||
self.data.get_mut(&HeaderName(Ascii::new(Cow::Borrowed(header_name::<H>()))))
|
||||
.and_then(Item::typed_mut::<H>)
|
||||
}
|
||||
|
||||
@@ -418,7 +418,7 @@ impl Headers {
|
||||
/// assert!(headers.has::<ContentType>());
|
||||
/// ```
|
||||
pub fn has<H: Header>(&self) -> bool {
|
||||
self.data.contains_key(&HeaderName(UniCase(Cow::Borrowed(header_name::<H>()))))
|
||||
self.data.contains_key(&HeaderName(Ascii::new(Cow::Borrowed(header_name::<H>()))))
|
||||
}
|
||||
|
||||
/// Removes a header from the map, if one existed.
|
||||
@@ -428,7 +428,7 @@ impl Headers {
|
||||
/// know whether a header exists, rather rely on `has`.
|
||||
pub fn remove<H: Header>(&mut self) -> Option<H> {
|
||||
trace!("Headers.remove( {:?} )", header_name::<H>());
|
||||
self.data.remove(&HeaderName(UniCase(Cow::Borrowed(header_name::<H>()))))
|
||||
self.data.remove(&HeaderName(Ascii::new(Cow::Borrowed(header_name::<H>()))))
|
||||
.and_then(Item::into_typed::<H>)
|
||||
}
|
||||
|
||||
@@ -484,7 +484,7 @@ impl Headers {
|
||||
let name = name.into();
|
||||
let value = value.into();
|
||||
trace!("Headers.set_raw( {:?}, {:?} )", name, value);
|
||||
self.data.insert(HeaderName(UniCase(name)), Item::new_raw(value));
|
||||
self.data.insert(HeaderName(Ascii::new(name)), Item::new_raw(value));
|
||||
}
|
||||
|
||||
/// Append a value to raw value of this header.
|
||||
@@ -506,7 +506,7 @@ impl Headers {
|
||||
let name = name.into();
|
||||
let value = value.into();
|
||||
trace!("Headers.append_raw( {:?}, {:?} )", name, value);
|
||||
let name = HeaderName(UniCase(name));
|
||||
let name = HeaderName(Ascii::new(name));
|
||||
if let Some(item) = self.data.get_mut(&name) {
|
||||
item.raw_mut().push(value);
|
||||
return;
|
||||
@@ -520,7 +520,6 @@ impl Headers {
|
||||
self.data.remove(name);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
impl PartialEq for Headers {
|
||||
@@ -577,7 +576,7 @@ impl<'a> HeaderView<'a> {
|
||||
/// Check if a HeaderView is a certain Header.
|
||||
#[inline]
|
||||
pub fn is<H: Header>(&self) -> bool {
|
||||
HeaderName(UniCase(Cow::Borrowed(header_name::<H>()))) == *self.0
|
||||
HeaderName(Ascii::new(Cow::Borrowed(header_name::<H>()))) == *self.0
|
||||
}
|
||||
|
||||
/// Get the Header name as a slice.
|
||||
@@ -633,7 +632,7 @@ impl<'a> Extend<HeaderView<'a>> for Headers {
|
||||
impl<'a> Extend<(&'a str, Bytes)> for Headers {
|
||||
fn extend<I: IntoIterator<Item=(&'a str, Bytes)>>(&mut self, iter: I) {
|
||||
for (name, value) in iter {
|
||||
let name = HeaderName(UniCase(maybe_literal(name)));
|
||||
let name = HeaderName(Ascii::new(maybe_literal(name)));
|
||||
//let trim = header.value.iter().rev().take_while(|&&x| x == b' ').count();
|
||||
|
||||
match self.data.entry(name) {
|
||||
@@ -657,7 +656,7 @@ impl<'a> FromIterator<HeaderView<'a>> for Headers {
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct HeaderName(UniCase<Cow<'static, str>>);
|
||||
struct HeaderName(Ascii<Cow<'static, str>>);
|
||||
|
||||
impl fmt::Display for HeaderName {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
@@ -667,7 +666,7 @@ impl fmt::Display for HeaderName {
|
||||
|
||||
impl AsRef<str> for HeaderName {
|
||||
fn as_ref(&self) -> &str {
|
||||
((self.0).0).as_ref()
|
||||
self.0.as_ref()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user