From 15e6c6065b3d098cff636dd4173435afa0edeff2 Mon Sep 17 00:00:00 2001 From: Guy Korland Date: Sun, 11 Aug 2019 18:07:15 +0300 Subject: [PATCH] pass value not reference to fun --- src/select/mod.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/select/mod.rs b/src/select/mod.rs index cb64270..b0495c7 100644 --- a/src/select/mod.rs +++ b/src/select/mod.rs @@ -1027,7 +1027,11 @@ pub struct SelectorMut { value: Option, } -fn replace_value Value>(mut tokens: Vec, value: &mut Value, fun: &mut F) { +fn replace_value Value>( + mut tokens: Vec, + value: &mut Value, + fun: &mut F, +) { let mut target = value; let last_index = tokens.len() - 1; @@ -1039,7 +1043,11 @@ fn replace_value Value>(mut tokens: Vec, value: &mut if is_last { if let Entry::Occupied(mut e) = map.entry(token) { let v = e.insert(Value::Null); - e.insert(fun(v)); + if let Some(res) = fun(v) { + e.insert(res); + } else { + e.remove(); + } } return; }