diff --git a/src/quirks/headers_macro.rs b/src/quirks/headers_macro.rs new file mode 100644 index 0000000..344012a --- /dev/null +++ b/src/quirks/headers_macro.rs @@ -0,0 +1,17 @@ +// Adapted from https://github.com/bluss/maplit for HeaderMaps +macro_rules! headers { + (@single $($x:tt)*) => (()); + (@count $($rest:expr),*) => (<[()]>::len(&[$(headers!(@single $rest)),*])); + + ($($key:expr => $value:expr,)+) => { headers!($($key => $value),+) }; + ($($key:expr => $value:expr),*) => { + { + let _cap = headers!(@count $($key),*); + let mut _map = headers::HeaderMap::with_capacity(_cap); + $( + let _ = _map.insert($key, $value); + )* + _map + } + }; +} diff --git a/src/quirks/mod.rs b/src/quirks/mod.rs index 5eac7a0..a352973 100644 --- a/src/quirks/mod.rs +++ b/src/quirks/mod.rs @@ -1,3 +1,6 @@ +#[macro_use] +mod headers_macro; + use headers::HeaderMap; use http::{header::USER_AGENT, Method}; use regex::Regex; @@ -7,24 +10,6 @@ use reqwest::Url; const GOOGLEBOT: &'static str = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://google.com/bot.html)"; -// Adapted from https://github.com/bluss/maplit for HeaderMaps -macro_rules! headers { - (@single $($x:tt)*) => (()); - (@count $($rest:expr),*) => (<[()]>::len(&[$(headers!(@single $rest)),*])); - - ($($key:expr => $value:expr,)+) => { headers!($($key => $value),+) }; - ($($key:expr => $value:expr),*) => { - { - let _cap = headers!(@count $($key),*); - let mut _map = headers::HeaderMap::with_capacity(_cap); - $( - let _ = _map.insert($key, $value); - )* - _map - } - }; -} - #[derive(Debug, Clone)] pub struct Quirk { pub pattern: Regex, @@ -63,7 +48,6 @@ impl Quirks { }), }, ]; - Self { quirks } }