From 8f35a03f519b70162625a0f2e6bd3580c767a4b9 Mon Sep 17 00:00:00 2001 From: Jonathan Reem Date: Fri, 26 Sep 2014 22:59:13 -0400 Subject: [PATCH] Use the entry API instead of find_or_insert. --- src/header/mod.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/header/mod.rs b/src/header/mod.rs index 08ba023b..c4ce71fc 100644 --- a/src/header/mod.rs +++ b/src/header/mod.rs @@ -12,7 +12,7 @@ use std::mem::{transmute, transmute_copy}; use std::raw::TraitObject; use std::str::{from_utf8, SendStr, Slice, Owned}; use std::string::raw; -use std::collections::hashmap::{HashMap, Entries}; +use std::collections::hashmap::{HashMap, Entries, Occupied, Vacant}; use uany::UncheckedAnyDowncast; use typeable::Typeable; @@ -91,8 +91,12 @@ impl Headers { let name = unsafe { raw::from_utf8(name) }; - let name = CaseInsensitive(Owned(name)); - let item = headers.data.find_or_insert(name, Raw(vec![])); + + let item = match headers.data.entry(CaseInsensitive(Owned(name))) { + Vacant(entry) => entry.set(Raw(vec![])), + Occupied(entry) => entry.into_mut() + }; + match *item { Raw(ref mut raw) => raw.push(value), // Unreachable