(fix) Replace find_equiv with a lifetime transmute.
This commit is contained in:
		| @@ -145,17 +145,20 @@ impl Headers { | ||||
|     /// let raw_content_type = headers.get_raw("content-type"); | ||||
|     /// ``` | ||||
|     pub fn get_raw(&self, name: &str) -> Option<&[Vec<u8>]> { | ||||
|         self.data.find_equiv(&CaseInsensitive(name)).and_then(|item| { | ||||
|             let lock = item.read(); | ||||
|             if let Some(ref raw) = lock.raw { | ||||
|                 return unsafe { mem::transmute(Some(raw[])) }; | ||||
|             } | ||||
|         self.data | ||||
|             // FIXME(reem): Find a better way to do this lookup without find_equiv. | ||||
|             .get(&CaseInsensitive(Slice(unsafe { mem::transmute::<&str, &str>(name) }))) | ||||
|             .and_then(|item| { | ||||
|                 let lock = item.read(); | ||||
|                 if let Some(ref raw) = lock.raw { | ||||
|                     return unsafe { mem::transmute(Some(raw[])) }; | ||||
|                 } | ||||
|  | ||||
|             let mut lock = item.write(); | ||||
|             let raw = vec![lock.typed.as_ref().unwrap().to_string().into_bytes()]; | ||||
|             lock.raw = Some(raw); | ||||
|             unsafe { mem::transmute(Some(lock.raw.as_ref().unwrap()[])) } | ||||
|         }) | ||||
|                 let mut lock = item.write(); | ||||
|                 let raw = vec![lock.typed.as_ref().unwrap().to_string().into_bytes()]; | ||||
|                 lock.raw = Some(raw); | ||||
|                 unsafe { mem::transmute(Some(lock.raw.as_ref().unwrap()[])) } | ||||
|             }) | ||||
|     } | ||||
|  | ||||
|     /// Set the raw value of a header, bypassing any typed headers. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user