[英]How to delete Rust hashmap?
目前我是一个菜鸟,正在学习用 Rust 构建一个简单的 CRUD 系统,但不知道如何从列表中删除一个项目。 通过列表进行映射,然后当它与待办事项哈希图中的项目匹配时,它应该从该列表中删除它。
if action == "remove" {
match todo.remove(&item) {
None => println!("'{}' is not present in the list", item),
Some(_) => match todo.save() {
Ok(_) => println!("todo saved"),
Err(why) => println!("An error occurred: {}", why),
},
}
}
fn remove(&mut self, key: &String) -> Option<()> {
match self.map.get_mut(key) {
Some(v) => Some(v),
None => None,
}
}
有人可以告诉我如何在 Rust 中做到这一点吗?
与其获取对HashMap
中值的可变引用,不如使用remove
方法删除项目,该方法返回一个可能包含已删除值的Option
。 假设您的HashMap
是HashMap<String, Todo>
,您的remove
方法可能如下所示:
fn remove(&mut self, key: &String) -> Option<Todo> {
self.map.remove(key)
}
话虽如此, HashSet
或其他集合可能更适合您的用例。 我还可以想象,您不想保存待办事项直接删除它,因此如果您还将操作更改为枚举,您的顶部代码块可能如下所示:
match action {
...
Action::Remove(item) => {
match todo.remove(&item) {
Some(value) => println!("{:?} removed from list", value),
None => println!("'{}' is not present in the list", item),
};
},
...
}
只需将self.map.get_mut(key)
替换为self.map.remove(key)
Option<&mut V>
Option<V>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.