mirror of
				https://github.com/dani-garcia/vaultwarden.git
				synced 2025-11-04 04:08:20 +02:00 
			
		
		
		
	Changed uppercase deserializer to avoid a clone.
This commit is contained in:
		
							
								
								
									
										18
									
								
								src/util.rs
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								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
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user