pass value not reference to fun

This commit is contained in:
Guy Korland 2019-08-11 18:07:15 +03:00 committed by freestrings
parent fab07adc5a
commit 15e6c6065b

View File

@ -1027,7 +1027,11 @@ pub struct SelectorMut {
value: Option<Value>, value: Option<Value>,
} }
fn replace_value<F: FnMut(Value) -> Value>(mut tokens: Vec<String>, value: &mut Value, fun: &mut F) { fn replace_value<F: FnMut(Value) -> Value>(
mut tokens: Vec<String>,
value: &mut Value,
fun: &mut F,
) {
let mut target = value; let mut target = value;
let last_index = tokens.len() - 1; let last_index = tokens.len() - 1;
@ -1039,7 +1043,11 @@ fn replace_value<F: FnMut(Value) -> Value>(mut tokens: Vec<String>, value: &mut
if is_last { if is_last {
if let Entry::Occupied(mut e) = map.entry(token) { if let Entry::Occupied(mut e) = map.entry(token) {
let v = e.insert(Value::Null); let v = e.insert(Value::Null);
e.insert(fun(v)); if let Some(res) = fun(v) {
e.insert(res);
} else {
e.remove();
}
} }
return; return;
} }