fix(header): deprecate HeaderFormatter

This commit is contained in:
Sean McArthur
2017-01-25 23:17:59 -08:00
parent 53762cafc6
commit cca798a09e
4 changed files with 39 additions and 13 deletions

View File

@@ -10,6 +10,7 @@ license = "MIT"
authors = ["Sean McArthur <sean.monstar@gmail.com>"]
keywords = ["http", "hyper", "hyperium"]
categories = ["web-programming::http-client", "web-programming::http-server"]
build = "build.rs"
[dependencies]
base64 = "0.3.0"
@@ -32,6 +33,9 @@ num_cpus = "1.0"
pretty_env_logger = "0.1"
spmc = "0.2"
[build-dependencies]
rustc_version = "0.1"
[features]
default = []
nightly = []

7
build.rs Normal file
View File

@@ -0,0 +1,7 @@
extern crate rustc_version as rustc;
fn main() {
if rustc::version_matches(">= 1.9") {
println!("cargo:rustc-cfg=has_deprecated");
}
}

View File

@@ -598,23 +598,30 @@ impl<'a> FromIterator<HeaderView<'a>> for Headers {
}
}
impl<'a> fmt::Display for &'a (Header + Send + Sync) {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let mut multi = MultilineFormatter(Multi::Join(true, f));
self.fmt_multi_header(&mut multi)
deprecated! {
#[deprecated(note="The semantics of formatting a HeaderFormat directly are not clear")]
impl<'a> fmt::Display for &'a (Header + Send + Sync) {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let mut multi = MultilineFormatter(Multi::Join(true, f));
self.fmt_multi_header(&mut multi)
}
}
}
/// A wrapper around any Header with a Display impl that calls `fmt_header`.
///
/// This can be used like so: `format!("{}", HeaderFormatter(&header))` to
/// get the 'value string' representation of this Header.
///
/// Note: This may not necessarily be the value written to stream, such
/// as with the SetCookie header.
pub struct HeaderFormatter<'a, H: Header>(pub &'a H);
deprecated! {
#[deprecated(note="The semantics of formatting a HeaderFormat directly are not clear")]
/// A wrapper around any Header with a Display impl that calls `fmt_header`.
///
/// This can be used like so: `format!("{}", HeaderFormatter(&header))` to
/// get the 'value string' representation of this Header.
///
/// Note: This may not necessarily be the value written to stream, such
/// as with the SetCookie header.
pub struct HeaderFormatter<'a, H: Header>(pub &'a H);
}
#[allow(deprecated)]
impl<'a, H: Header> fmt::Display for HeaderFormatter<'a, H> {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
@@ -623,6 +630,7 @@ impl<'a, H: Header> fmt::Display for HeaderFormatter<'a, H> {
}
}
#[allow(deprecated)]
impl<'a, H: Header> fmt::Debug for HeaderFormatter<'a, H> {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {

View File

@@ -55,6 +55,13 @@ macro_rules! unimplemented {
});
}
macro_rules! deprecated {
(#[$note:meta] $i:item) => (
#[cfg_attr(has_deprecated, $note)]
$i
);
}
#[cfg(test)]
mod mock;
pub mod client;