refactor(header): remove GetType trait
Commit 7d122bd15f removed usage of
`header::sealed::GetType`, so the trait can safely be removed.
This commit is contained in:
@@ -83,7 +83,7 @@ use std::{mem, fmt};
|
||||
use unicase::Ascii;
|
||||
|
||||
use self::internals::{Item, VecMap, Entry};
|
||||
use self::sealed::{GetType, HeaderClone};
|
||||
use self::sealed::HeaderClone;
|
||||
|
||||
pub use self::shared::*;
|
||||
pub use self::common::*;
|
||||
@@ -101,7 +101,7 @@ pub mod parsing;
|
||||
///
|
||||
/// This trait represents the construction and identification of headers,
|
||||
/// and contains trait-object unsafe methods.
|
||||
pub trait Header: HeaderClone + GetType + Send + Sync {
|
||||
pub trait Header: 'static + HeaderClone + Send + Sync {
|
||||
/// Returns the name of the header field this belongs to.
|
||||
///
|
||||
/// This will become an associated constant once available.
|
||||
@@ -132,19 +132,8 @@ pub trait Header: HeaderClone + GetType + Send + Sync {
|
||||
}
|
||||
|
||||
mod sealed {
|
||||
use std::any::{Any, TypeId};
|
||||
use super::Header;
|
||||
|
||||
#[doc(hidden)]
|
||||
pub trait GetType: Any {
|
||||
#[inline(always)]
|
||||
fn get_type(&self) -> TypeId {
|
||||
TypeId::of::<Self>()
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Any> GetType for T {}
|
||||
|
||||
#[doc(hidden)]
|
||||
pub trait HeaderClone {
|
||||
fn clone_box(&self) -> Box<Header + Send + Sync>;
|
||||
@@ -156,23 +145,6 @@ mod sealed {
|
||||
Box::new(self.clone())
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_get_type() {
|
||||
use ::header::{ContentLength, UserAgent};
|
||||
|
||||
let len = ContentLength(5);
|
||||
let agent = UserAgent::new("hyper");
|
||||
|
||||
assert_eq!(TypeId::of::<ContentLength>(), len.get_type());
|
||||
assert_eq!(TypeId::of::<UserAgent>(), agent.get_type());
|
||||
|
||||
let len: Box<Header + Send + Sync> = Box::new(len);
|
||||
let agent: Box<Header + Send + Sync> = Box::new(agent);
|
||||
|
||||
assert_eq!(TypeId::of::<ContentLength>(), (*len).get_type());
|
||||
assert_eq!(TypeId::of::<UserAgent>(), (*agent).get_type());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user