Skip to content

Commit c90861f

Browse files
committed
Use HashMap::entry() API to remove local providers
1 parent 7492895 commit c90861f

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/protocol/libp2p/kademlia/store.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -268,13 +268,15 @@ impl MemoryStore {
268268
return;
269269
};
270270

271-
let drop_key = match self.provider_keys.get_mut(&key) {
272-
None => {
271+
match self.provider_keys.entry(key.clone()) {
272+
Entry::Vacant(_) => {
273273
tracing::error!(?key, "local provider key not found during removal",);
274274
debug_assert!(false);
275275
return;
276276
}
277-
Some(providers) => {
277+
Entry::Occupied(mut entry) => {
278+
let providers = entry.get_mut();
279+
278280
// Providers are sorted by distance.
279281
let local_provider_distance = KademliaKey::from(self.local_peer_id.clone())
280282
.distance(&KademliaKey::new(key.clone()));
@@ -292,13 +294,11 @@ impl MemoryStore {
292294
}
293295
}
294296

295-
providers.is_empty()
297+
if providers.is_empty() {
298+
entry.remove();
299+
}
296300
}
297301
};
298-
299-
if drop_key {
300-
self.provider_keys.remove(&key);
301-
}
302302
}
303303

304304
/// Poll next action from the store.

0 commit comments

Comments
 (0)