将数据从一个Map更新到另一个Map



我该怎么做呢?
假设我创建了以下文档

{ 
"_id": "12345",
"email": "julio@gmail.com",
"password": "julio123",
"created": "2021-08-17",
"status": "0"
}

,现在通过创建的文档,我希望有一个像下面这样的新文档

{ 
"email": "julio@gmail.com",
"password": "julio123",
"status": "1"
}

我不知道我所做的是否正确,但我知道还有更多的代码缺失。

#[cfg(test)]
mod tests {
use serde_json::{Map, json};
#[test]
fn prueba() {
let mut user = Map::new();
user.insert("id".to_string(), json!("12345"));
user.insert("email".to_string(), json!("juan@gmail.com"));
user.insert("password".to_string(), json!("juan123"));
user.insert("created".to_string(), json!("2021-08-17"));
user.insert("status".to_string(), json!("0"));
println!("user: {:#?}", user);
let user2 = user.into_iter().fold(Map::new(), |mut user_map, (key, val)| {
user_map.insert(key.clone(), val.clone());
user_map
});
println!("user2: {:#?}", user2);
}
}

我正在学习使用函数式编程,我需要帮助来获得最好的结果。

您似乎想要实现的是过滤和更新一些字段,从而创建一个新对象。
你可以这样做:

let user2 = user
.into_iter()
.filter_map(|(k, v)| match k.as_str() {
"email" => Some((k, v)),
"password" => Some((k, v)),
"status" => Some((k, json!("1"))),
_ => None,
})
.collect::<Map<_, _>>();

最新更新