diff --git a/src/http/body.rs b/src/http/body.rs index d0b80329d2..ce5b87dad2 100644 --- a/src/http/body.rs +++ b/src/http/body.rs @@ -13,11 +13,13 @@ pub struct Body(TokioBody); impl Body { /// Return an empty body stream + #[inline] pub fn empty() -> Body { Body(TokioBody::empty()) } /// Return a body stream with an associated sender half + #[inline] pub fn pair() -> (mpsc::Sender>, Body) { let (tx, rx) = TokioBody::pair(); let rx = Body(rx); @@ -25,64 +27,81 @@ impl Body { } } +impl Default for Body { + #[inline] + fn default() -> Body { + Body::empty() + } +} + impl Stream for Body { type Item = Chunk; type Error = ::Error; + #[inline] fn poll(&mut self) -> Poll, ::Error> { self.0.poll() } } impl From for tokio_proto::streaming::Body { + #[inline] fn from(b: Body) -> tokio_proto::streaming::Body { b.0 } } impl From> for Body { + #[inline] fn from(tokio_body: tokio_proto::streaming::Body) -> Body { Body(tokio_body) } } impl From>> for Body { + #[inline] fn from(src: mpsc::Receiver>) -> Body { Body(src.into()) } } impl From for Body { + #[inline] fn from (chunk: Chunk) -> Body { Body(TokioBody::from(chunk)) } } impl From for Body { + #[inline] fn from (bytes: Bytes) -> Body { Body(TokioBody::from(Chunk::from(bytes))) } } impl From> for Body { + #[inline] fn from (vec: Vec) -> Body { Body(TokioBody::from(Chunk::from(vec))) } } impl From<&'static [u8]> for Body { + #[inline] fn from (slice: &'static [u8]) -> Body { Body(TokioBody::from(Chunk::from(slice))) } } impl From for Body { + #[inline] fn from (s: String) -> Body { Body(TokioBody::from(Chunk::from(s.into_bytes()))) } } impl From<&'static str> for Body { + #[inline] fn from (slice: &'static str) -> Body { Body(TokioBody::from(Chunk::from(slice.as_bytes()))) } @@ -107,7 +126,7 @@ fn test_body_stream_concat() { tx.send(Ok("world".into())).wait().unwrap(); }); - let total = body.concat().wait().unwrap(); + let total = body.concat2().wait().unwrap(); assert_eq!(total.as_ref(), b"hello world"); }