perf(header): add #[inline] to header! macros

This commit is contained in:
Sean McArthur
2017-05-25 10:32:25 -07:00
parent 40c575cc59
commit 9688c8b8ae

View File

@@ -101,12 +101,14 @@ macro_rules! __hyper__deref {
impl ::std::ops::Deref for $from { impl ::std::ops::Deref for $from {
type Target = $to; type Target = $to;
#[inline]
fn deref(&self) -> &$to { fn deref(&self) -> &$to {
&self.0 &self.0
} }
} }
impl ::std::ops::DerefMut for $from { impl ::std::ops::DerefMut for $from {
#[inline]
fn deref_mut(&mut self) -> &mut $to { fn deref_mut(&mut self) -> &mut $to {
&mut self.0 &mut self.0
} }
@@ -201,14 +203,17 @@ macro_rules! header {
static NAME: &'static str = $n; static NAME: &'static str = $n;
NAME NAME
} }
#[inline]
fn parse_header(raw: &$crate::header::Raw) -> $crate::Result<Self> { fn parse_header(raw: &$crate::header::Raw) -> $crate::Result<Self> {
$crate::header::parsing::from_comma_delimited(raw).map($id) $crate::header::parsing::from_comma_delimited(raw).map($id)
} }
#[inline]
fn fmt_header(&self, f: &mut $crate::header::Formatter) -> ::std::fmt::Result { fn fmt_header(&self, f: &mut $crate::header::Formatter) -> ::std::fmt::Result {
f.fmt_line(self) f.fmt_line(self)
} }
} }
impl ::std::fmt::Display for $id { impl ::std::fmt::Display for $id {
#[inline]
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
$crate::header::parsing::fmt_comma_delimited(f, &self.0[..]) $crate::header::parsing::fmt_comma_delimited(f, &self.0[..])
} }
@@ -221,18 +226,22 @@ macro_rules! header {
pub struct $id(pub Vec<$item>); pub struct $id(pub Vec<$item>);
__hyper__deref!($id => Vec<$item>); __hyper__deref!($id => Vec<$item>);
impl $crate::header::Header for $id { impl $crate::header::Header for $id {
#[inline]
fn header_name() -> &'static str { fn header_name() -> &'static str {
static NAME: &'static str = $n; static NAME: &'static str = $n;
NAME NAME
} }
#[inline]
fn parse_header(raw: &$crate::header::Raw) -> $crate::Result<Self> { fn parse_header(raw: &$crate::header::Raw) -> $crate::Result<Self> {
$crate::header::parsing::from_comma_delimited(raw).map($id) $crate::header::parsing::from_comma_delimited(raw).map($id)
} }
#[inline]
fn fmt_header(&self, f: &mut $crate::header::Formatter) -> ::std::fmt::Result { fn fmt_header(&self, f: &mut $crate::header::Formatter) -> ::std::fmt::Result {
f.fmt_line(self) f.fmt_line(self)
} }
} }
impl ::std::fmt::Display for $id { impl ::std::fmt::Display for $id {
#[inline]
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
$crate::header::parsing::fmt_comma_delimited(f, &self.0[..]) $crate::header::parsing::fmt_comma_delimited(f, &self.0[..])
} }
@@ -245,20 +254,24 @@ macro_rules! header {
pub struct $id(pub $value); pub struct $id(pub $value);
__hyper__deref!($id => $value); __hyper__deref!($id => $value);
impl $crate::header::Header for $id { impl $crate::header::Header for $id {
#[inline]
fn header_name() -> &'static str { fn header_name() -> &'static str {
static NAME: &'static str = $n; static NAME: &'static str = $n;
NAME NAME
} }
#[inline]
fn parse_header(raw: &$crate::header::Raw) -> $crate::Result<Self> { fn parse_header(raw: &$crate::header::Raw) -> $crate::Result<Self> {
$crate::header::parsing::from_one_raw_str(raw).map($id) $crate::header::parsing::from_one_raw_str(raw).map($id)
} }
#[inline]
fn fmt_header(&self, f: &mut $crate::header::Formatter) -> ::std::fmt::Result { fn fmt_header(&self, f: &mut $crate::header::Formatter) -> ::std::fmt::Result {
f.fmt_line(self) f.fmt_line(self)
} }
} }
impl ::std::fmt::Display for $id { impl ::std::fmt::Display for $id {
#[inline]
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
::std::fmt::Display::fmt(&**self, f) ::std::fmt::Display::fmt(&self.0, f)
} }
} }
}; };
@@ -275,25 +288,30 @@ macro_rules! header {
} }
impl ::std::ops::Deref for $id { impl ::std::ops::Deref for $id {
type Target = $value; type Target = $value;
#[inline]
fn deref(&self) -> &Self::Target { fn deref(&self) -> &Self::Target {
&(self.0) &(self.0)
} }
} }
impl $crate::header::Header for $id { impl $crate::header::Header for $id {
#[inline]
fn header_name() -> &'static str { fn header_name() -> &'static str {
static NAME: &'static str = $n; static NAME: &'static str = $n;
NAME NAME
} }
#[inline]
fn parse_header(raw: &$crate::header::Raw) -> $crate::Result<Self> { fn parse_header(raw: &$crate::header::Raw) -> $crate::Result<Self> {
$crate::header::parsing::from_one_raw_str::<<$value as ::std::borrow::ToOwned>::Owned>(raw).map($id::new) $crate::header::parsing::from_one_raw_str::<<$value as ::std::borrow::ToOwned>::Owned>(raw).map($id::new)
} }
#[inline]
fn fmt_header(&self, f: &mut $crate::header::Formatter) -> ::std::fmt::Result { fn fmt_header(&self, f: &mut $crate::header::Formatter) -> ::std::fmt::Result {
f.fmt_line(self) f.fmt_line(self)
} }
} }
impl ::std::fmt::Display for $id { impl ::std::fmt::Display for $id {
#[inline]
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
::std::fmt::Display::fmt(&**self, f) ::std::fmt::Display::fmt(&self.0, f)
} }
} }
}; };
@@ -308,10 +326,12 @@ macro_rules! header {
Items(Vec<$item>), Items(Vec<$item>),
} }
impl $crate::header::Header for $id { impl $crate::header::Header for $id {
#[inline]
fn header_name() -> &'static str { fn header_name() -> &'static str {
static NAME: &'static str = $n; static NAME: &'static str = $n;
NAME NAME
} }
#[inline]
fn parse_header(raw: &$crate::header::Raw) -> $crate::Result<Self> { fn parse_header(raw: &$crate::header::Raw) -> $crate::Result<Self> {
// FIXME: Return None if no item is in $id::Only // FIXME: Return None if no item is in $id::Only
if raw.len() == 1 { if raw.len() == 1 {
@@ -321,11 +341,13 @@ macro_rules! header {
} }
$crate::header::parsing::from_comma_delimited(raw).map($id::Items) $crate::header::parsing::from_comma_delimited(raw).map($id::Items)
} }
#[inline]
fn fmt_header(&self, f: &mut $crate::header::Formatter) -> ::std::fmt::Result { fn fmt_header(&self, f: &mut $crate::header::Formatter) -> ::std::fmt::Result {
f.fmt_line(self) f.fmt_line(self)
} }
} }
impl ::std::fmt::Display for $id { impl ::std::fmt::Display for $id {
#[inline]
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
match *self { match *self {
$id::Any => f.write_str("*"), $id::Any => f.write_str("*"),