feat(http): use the bytes crate for Chunk and internally
This commit is contained in:
		| @@ -1,27 +1,25 @@ | ||||
| use std::fmt; | ||||
|  | ||||
| use http::buf::MemSlice; | ||||
| use bytes::Bytes; | ||||
|  | ||||
| /// A piece of a message body. | ||||
| pub struct Chunk(Inner); | ||||
|  | ||||
| enum Inner { | ||||
|     Owned(Vec<u8>), | ||||
|     Mem(MemSlice), | ||||
|     Static(&'static [u8]), | ||||
|     Shared(Bytes), | ||||
| } | ||||
|  | ||||
| impl From<Vec<u8>> for Chunk { | ||||
|     #[inline] | ||||
|     fn from(v: Vec<u8>) -> Chunk { | ||||
|         Chunk(Inner::Owned(v)) | ||||
|         Chunk::from(Bytes::from(v)) | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl From<&'static [u8]> for Chunk { | ||||
|     #[inline] | ||||
|     fn from(slice: &'static [u8]) -> Chunk { | ||||
|         Chunk(Inner::Static(slice)) | ||||
|         Chunk::from(Bytes::from_static(slice)) | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -39,9 +37,9 @@ impl From<&'static str> for Chunk { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl From<MemSlice> for Chunk { | ||||
|     fn from(mem: MemSlice) -> Chunk { | ||||
|         Chunk(Inner::Mem(mem)) | ||||
| impl From<Bytes> for Chunk { | ||||
|     fn from(mem: Bytes) -> Chunk { | ||||
|         Chunk(Inner::Shared(mem)) | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -58,9 +56,7 @@ impl AsRef<[u8]> for Chunk { | ||||
|     #[inline] | ||||
|     fn as_ref(&self) -> &[u8] { | ||||
|         match self.0 { | ||||
|             Inner::Owned(ref vec) => vec, | ||||
|             Inner::Mem(ref slice) => slice.as_ref(), | ||||
|             Inner::Static(slice) => slice, | ||||
|             Inner::Shared(ref slice) => slice, | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user