Add a get_raw method, which allows users to access the raw value of a header
This method is marked unsafe, as it should not be used in normal code because it can easily invalidate header representations. Fixes #10
This commit is contained in:
		| @@ -127,6 +127,27 @@ impl Headers { | |||||||
|         self.get_ref().map(|v: &H| v.clone()) |         self.get_ref().map(|v: &H| v.clone()) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /// Access the raw value of a header, if it exists and has not | ||||||
|  |     /// been already parsed. | ||||||
|  |     /// | ||||||
|  |     /// If the header field has already been parsed into a typed header, | ||||||
|  |     /// then you *must* access it through that representation. | ||||||
|  |     /// | ||||||
|  |     /// Example: | ||||||
|  |     /// ``` | ||||||
|  |     /// # use hyper::header::{Headers, ContentType}; | ||||||
|  |     /// # let mut headers = Headers::new(); | ||||||
|  |     /// let raw_content_type = unsafe { headers.get_raw("content-type") }; | ||||||
|  |     /// ``` | ||||||
|  |     pub unsafe fn get_raw(&self, name: &'static str) -> Option<&[Vec<u8>]> { | ||||||
|  |         self.data.find(&name).and_then(|item| { | ||||||
|  |             match *item { | ||||||
|  |                 Raw(ref raw) => Some(raw.as_slice()), | ||||||
|  |                 _ => None | ||||||
|  |             } | ||||||
|  |         }) | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /// Get a reference to the header field's value, if it exists. |     /// Get a reference to the header field's value, if it exists. | ||||||
|     pub fn get_ref<H: Header>(&mut self) -> Option<&H> { |     pub fn get_ref<H: Header>(&mut self) -> Option<&H> { | ||||||
|         self.data.find_mut(&header_name::<H>()).and_then(|item| { |         self.data.find_mut(&header_name::<H>()).and_then(|item| { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user