代码如下
map_internal: RwLock<HashMap<Pubkey,AccountMapEntry<T>>>,
let mut updates = Vec::default();
{
let map = self.map_internal.read().unwrap();
for (k, v) in map.iter() {
if v.dirty() {
updates.push((*k, Arc::clone(v)));
}
}
}
Arc::clone(v)
我可以理解为v是一个Arc?
为什么要用*k
而不是k
?
有时候你调用第三方库, 或者 Rust 内置库,
*k
和k
都是可以的, 有的时候已经为你实现了 Deref 自动解引用了.参考: 通过 Deref trait 将智能指针当作常规引用处理