gpt4 book ai didi

rust - 无需克隆即可获得 HashMap.get() 结果的所有权

转载 作者:行者123 更新时间:2023-12-03 11:34:07 25 4
gpt4 key购买 nike

有没有比这行更有效的从 HashMap 获取拥有值的方法?

let output_items = output_tables.get(TABLE_NAME_TLIST).unwrap().to_owned();

此屏幕截图扩展了类型:

code snippet

最佳答案

如果您想获得该值的所有权,HashMap::remove()将返回 Option<T>而不是 Option<&T>HashMap::get() 返回.参见 this playground :

use std::collections::HashMap;

fn main() {
let mut map = HashMap::new();
map.insert(1, "a");
assert_eq!(map.remove(&1), Some("a"));
assert_eq!(map.remove(&1), None);
}

如果你想让值保留在HashMap中但也拥有其他地方的值(value),您可以将其包装在 Rc<T> 中分享所有权。如果对象需要可变,您可以将其包装在 Rc<RefCell<T>> 中。 .

关于rust - 无需克隆即可获得 HashMap.get() 结果的所有权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62927852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com