[英]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.