我想向HashMap中插入内容,但是想要保持关键字的不可变借用,以便在其他地方使用。在我的情况下,这些关键字是字符串。
以下是一种方法:
以下是一种方法:
use std::collections::HashMap;
let mut map = HashMap::new();
let id = "data".to_string(); // This needs to be a String
let cloned = id.clone();
map.insert(id, 5);
let one = map.get(&cloned);
let two = map.get("data");
println!("{:?}", (one, two));
但这需要一个克隆。
在 Rust 1.2.0 之前,这个可行:
use std::collections::HashMap;
use std::rc::Rc;
use std::string::as_string;
let mut map = HashMap::new();
let data = Rc::new("data".to_string()); // This needs to be a String
let copy = data.clone();
map.insert(data, 5);
let one = map.get(©);
let two = map.get(&*as_string("data"));
println!("{:?}", (one, two));
如何在Rust 1.2.0中实现这个?
理想情况下,我想把一个键放进HashMap里,但仍然保留对它的引用,并允许我使用&str
类型的元素访问它,而不需要额外分配内存。