feat(http): implement Default for Body
				
					
				
			This commit is contained in:
		| @@ -13,11 +13,13 @@ pub struct Body(TokioBody); | |||||||
|  |  | ||||||
| impl Body { | impl Body { | ||||||
|     /// Return an empty body stream |     /// Return an empty body stream | ||||||
|  |     #[inline] | ||||||
|     pub fn empty() -> Body { |     pub fn empty() -> Body { | ||||||
|         Body(TokioBody::empty()) |         Body(TokioBody::empty()) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /// Return a body stream with an associated sender half |     /// Return a body stream with an associated sender half | ||||||
|  |     #[inline] | ||||||
|     pub fn pair() -> (mpsc::Sender<Result<Chunk, ::Error>>, Body) { |     pub fn pair() -> (mpsc::Sender<Result<Chunk, ::Error>>, Body) { | ||||||
|         let (tx, rx) = TokioBody::pair(); |         let (tx, rx) = TokioBody::pair(); | ||||||
|         let rx = Body(rx); |         let rx = Body(rx); | ||||||
| @@ -25,64 +27,81 @@ impl Body { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | impl Default for Body { | ||||||
|  |     #[inline] | ||||||
|  |     fn default() -> Body { | ||||||
|  |         Body::empty() | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| impl Stream for Body { | impl Stream for Body { | ||||||
|     type Item = Chunk; |     type Item = Chunk; | ||||||
|     type Error = ::Error; |     type Error = ::Error; | ||||||
|  |  | ||||||
|  |     #[inline] | ||||||
|     fn poll(&mut self) -> Poll<Option<Chunk>, ::Error> { |     fn poll(&mut self) -> Poll<Option<Chunk>, ::Error> { | ||||||
|         self.0.poll() |         self.0.poll() | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl From<Body> for tokio_proto::streaming::Body<Chunk, ::Error> { | impl From<Body> for tokio_proto::streaming::Body<Chunk, ::Error> { | ||||||
|  |     #[inline] | ||||||
|     fn from(b: Body) -> tokio_proto::streaming::Body<Chunk, ::Error> { |     fn from(b: Body) -> tokio_proto::streaming::Body<Chunk, ::Error> { | ||||||
|         b.0 |         b.0 | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl From<tokio_proto::streaming::Body<Chunk, ::Error>> for Body { | impl From<tokio_proto::streaming::Body<Chunk, ::Error>> for Body { | ||||||
|  |     #[inline] | ||||||
|     fn from(tokio_body: tokio_proto::streaming::Body<Chunk, ::Error>) -> Body { |     fn from(tokio_body: tokio_proto::streaming::Body<Chunk, ::Error>) -> Body { | ||||||
|         Body(tokio_body) |         Body(tokio_body) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl From<mpsc::Receiver<Result<Chunk, ::Error>>> for Body { | impl From<mpsc::Receiver<Result<Chunk, ::Error>>> for Body { | ||||||
|  |     #[inline] | ||||||
|     fn from(src: mpsc::Receiver<Result<Chunk, ::Error>>) -> Body { |     fn from(src: mpsc::Receiver<Result<Chunk, ::Error>>) -> Body { | ||||||
|         Body(src.into()) |         Body(src.into()) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl From<Chunk> for Body { | impl From<Chunk> for Body { | ||||||
|  |     #[inline] | ||||||
|     fn from (chunk: Chunk) -> Body { |     fn from (chunk: Chunk) -> Body { | ||||||
|         Body(TokioBody::from(chunk)) |         Body(TokioBody::from(chunk)) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl From<Bytes> for Body { | impl From<Bytes> for Body { | ||||||
|  |     #[inline] | ||||||
|     fn from (bytes: Bytes) -> Body { |     fn from (bytes: Bytes) -> Body { | ||||||
|         Body(TokioBody::from(Chunk::from(bytes))) |         Body(TokioBody::from(Chunk::from(bytes))) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl From<Vec<u8>> for Body { | impl From<Vec<u8>> for Body { | ||||||
|  |     #[inline] | ||||||
|     fn from (vec: Vec<u8>) -> Body { |     fn from (vec: Vec<u8>) -> Body { | ||||||
|         Body(TokioBody::from(Chunk::from(vec))) |         Body(TokioBody::from(Chunk::from(vec))) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl From<&'static [u8]> for Body { | impl From<&'static [u8]> for Body { | ||||||
|  |     #[inline] | ||||||
|     fn from (slice: &'static [u8]) -> Body { |     fn from (slice: &'static [u8]) -> Body { | ||||||
|         Body(TokioBody::from(Chunk::from(slice))) |         Body(TokioBody::from(Chunk::from(slice))) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl From<String> for Body { | impl From<String> for Body { | ||||||
|  |     #[inline] | ||||||
|     fn from (s: String) -> Body { |     fn from (s: String) -> Body { | ||||||
|         Body(TokioBody::from(Chunk::from(s.into_bytes()))) |         Body(TokioBody::from(Chunk::from(s.into_bytes()))) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl From<&'static str> for Body { | impl From<&'static str> for Body { | ||||||
|  |     #[inline] | ||||||
|     fn from (slice: &'static str) -> Body { |     fn from (slice: &'static str) -> Body { | ||||||
|         Body(TokioBody::from(Chunk::from(slice.as_bytes()))) |         Body(TokioBody::from(Chunk::from(slice.as_bytes()))) | ||||||
|     } |     } | ||||||
| @@ -107,7 +126,7 @@ fn test_body_stream_concat() { | |||||||
|         tx.send(Ok("world".into())).wait().unwrap(); |         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"); |     assert_eq!(total.as_ref(), b"hello world"); | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user