commit 4689ed7b30b8240062751336f4ae6df9cbb7abba
parent 084bc2aee3de61cc705487d6d730bf2bb1162f1f
Author: Daniel GarcĂa <dani-garcia@users.noreply.github.com>
Date: Mon, 18 Mar 2019 22:02:37 +0100
Changed uppercase deserializer to avoid a clone.
Diffstat:
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/util.rs b/src/util.rs
@@ -218,7 +218,7 @@ impl<'de> Visitor<'de> for UpCaseVisitor {
let mut result_map = JsonMap::new();
while let Some((key, value)) = map.next_entry()? {
- result_map.insert(upcase_first(key), upcase_value(&value));
+ result_map.insert(upcase_first(key), upcase_value(value));
}
Ok(Value::Object(result_map))
@@ -231,32 +231,32 @@ impl<'de> Visitor<'de> for UpCaseVisitor {
let mut result_seq = Vec::<Value>::new();
while let Some(value) = seq.next_element()? {
- result_seq.push(upcase_value(&value));
+ result_seq.push(upcase_value(value));
}
Ok(Value::Array(result_seq))
}
}
-fn upcase_value(value: &Value) -> Value {
- if let Some(map) = value.as_object() {
+fn upcase_value(value: Value) -> Value {
+ if let Value::Object(map) = value {
let mut new_value = json!({});
- for (key, val) in map {
- let processed_key = _process_key(key);
+ for (key, val) in map.into_iter() {
+ let processed_key = _process_key(&key);
new_value[processed_key] = upcase_value(val);
}
new_value
- } else if let Some(array) = value.as_array() {
+ } else if let Value::Array(array) = value {
// Initialize array with null values
let mut new_value = json!(vec![Value::Null; array.len()]);
- for (index, val) in array.iter().enumerate() {
+ for (index, val) in array.into_iter().enumerate() {
new_value[index] = upcase_value(val);
}
new_value
} else {
- value.clone()
+ value
}
}