簡體   English   中英

如何刪除 Rust 哈希圖?

[英]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 假設您的HashMapHashMap<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)

  • get_mut :返回與現有鍵相關的值的可變引用。 Option<&mut V>
  • remove :刪除鍵/值對,如果鍵存在則返回值。 Option<V>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM