From 438d005b2cc49836d41c223ee01f2dbe739224ac Mon Sep 17 00:00:00 2001 From: Takayuki Nakata Date: Tue, 14 Jan 2020 22:11:16 +0900 Subject: [PATCH] Refactoring to use `Vacant`/`Occupied` instead of remove/insert --- src/cargo/util/config/mod.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/cargo/util/config/mod.rs b/src/cargo/util/config/mod.rs index 86a91409b..4e97a1cb1 100644 --- a/src/cargo/util/config/mod.rs +++ b/src/cargo/util/config/mod.rs @@ -1005,12 +1005,15 @@ impl Config { } if let CV::Table(map, _) = value { + let base_map = self.values_mut()?; for (k, v) in map { - if let Some(mut base_map) = self.values_mut()?.remove(&k) { - base_map.merge(v, true)?; - self.values_mut()?.insert(k.into(), base_map); - } else { - self.values_mut()?.insert(k.into(), v); + match base_map.entry(k) { + Vacant(entry) => { + entry.insert(v); + } + Occupied(mut entry) => { + entry.get_mut().merge(v, true)?; + } } } }