我尝试在两个集合中分享一个引用:地图和列表。我想要将其推送到这两个集合中,从列表的末尾中删除,并从地图中删除。这段代码只是一个示例,展示了我的意图,它甚至不能编译!
什么是正确的模式来实现这个?什么样的保证是最佳实践?
什么是正确的模式来实现这个?什么样的保证是最佳实践?
use std::collections::{HashMap, LinkedList};
struct Data {
url: String,
access: u64,
}
struct Holder {
list: LinkedList<Box<Data>>,
map: HashMap<String, Box<Data>>,
}
impl Holder {
fn push(&mut self, d: Data) {
let boxed = Box::new(d);
self.list.push_back(boxed);
self.map.insert(d.url.to_owned(), boxed);
}
fn remove_last(&mut self) {
if let Some(v) = self.list.back() {
self.map.remove(&v.url);
}
self.list.pop_back();
}
}
RefCell
中的性能问题如何?我知道它为项目提供了RWLock
。在处理大量数据时,这不是一个问题吗? - Navid Nabavi