From fa6582ad2fe40867b26174222444c329dc929f1c Mon Sep 17 00:00:00 2001 From: ackintosh Date: Tue, 28 Apr 2026 06:07:54 +0900 Subject: [PATCH 1/4] Fix iterating on a map's values https://rust-lang.github.io/rust-clippy/rust-1.95.0/index.html#iter_kv_map --- src/query_pool/peers/closest.rs | 4 ++-- src/query_pool/peers/predicate.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/query_pool/peers/closest.rs b/src/query_pool/peers/closest.rs index 334d8a39f..58373f2d1 100644 --- a/src/query_pool/peers/closest.rs +++ b/src/query_pool/peers/closest.rs @@ -324,8 +324,8 @@ where /// Consumes the query, returning the target and the closest peers. pub fn into_result(self) -> Vec { self.closest_peers - .into_iter() - .filter_map(|(_, peer)| { + .into_values() + .filter_map(|peer| { if let QueryPeerState::Succeeded = peer.state { Some(peer.key.into_preimage()) } else { diff --git a/src/query_pool/peers/predicate.rs b/src/query_pool/peers/predicate.rs index 3b4442019..c1f2aa128 100644 --- a/src/query_pool/peers/predicate.rs +++ b/src/query_pool/peers/predicate.rs @@ -314,8 +314,8 @@ where /// Consumes the query, returning the peers who match the predicate. pub fn into_result(self) -> Vec { self.closest_peers - .into_iter() - .filter_map(|(_, peer)| { + .into_values() + .filter_map(|peer| { if let QueryPeerState::Succeeded = peer.state { if peer.predicate_match { Some(peer.key.into_preimage()) From 3a6f723f37435e05c1f7cce2f818ae910048408e Mon Sep 17 00:00:00 2001 From: ackintosh Date: Tue, 28 Apr 2026 06:17:32 +0900 Subject: [PATCH 2/4] Simplify ENR seq check Collapses the inner `if` into the outer `match` arm as a guard, removing the unneeded `mut`. Fixes clippy::collapsible_match: https://rust-lang.github.io/rust-clippy/rust-1.95.0/index.html#collapsible_match --- src/service.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/service.rs b/src/service.rs index 10b26d31d..247280597 100644 --- a/src/service.rs +++ b/src/service.rs @@ -616,11 +616,9 @@ impl Service { // check if we need to update the known ENR let mut to_request_enr = None; match self.kbuckets.write().entry(&node_address.node_id.into()) { - kbucket::Entry::Present(ref mut entry, _) => { - if entry.value().seq() < enr_seq { - let enr = entry.value().clone(); - to_request_enr = Some(enr); - } + kbucket::Entry::Present(ref entry, _) if entry.value().seq() < enr_seq => { + let enr = entry.value().clone(); + to_request_enr = Some(enr); } kbucket::Entry::Pending(ref mut entry, _) => { if entry.value().seq() < enr_seq { From b13cb7c793bbfc0db2a6606a5224fdc10688d719 Mon Sep 17 00:00:00 2001 From: ackintosh Date: Tue, 28 Apr 2026 06:29:07 +0900 Subject: [PATCH 3/4] Simplify ENR seq check and remove unnecessary required `mut` PendingNode::value() and PendingEntry::value() unnecessarily required mutable access. Changed both to take &self to fix clippy errors at call sites where `entry` is bound as an immutable reference, causing: "cannot borrow immutable local variable `entry` as mutable" on service.rs line:623. Fixes clippy::collapsible_match: https://rust-lang.github.io/rust-clippy/rust-1.95.0/index.html#collapsible_match --- src/kbucket/bucket.rs | 4 ++-- src/kbucket/entry.rs | 6 +++--- src/service.rs | 12 +++++------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/kbucket/bucket.rs b/src/kbucket/bucket.rs index b943f9661..c49a794c4 100644 --- a/src/kbucket/bucket.rs +++ b/src/kbucket/bucket.rs @@ -90,8 +90,8 @@ impl PendingNode { self.node.status } - pub fn value_mut(&mut self) -> &mut TVal { - &mut self.node.value + pub fn value(&self) -> &TVal { + &self.node.value } pub fn set_ready_at(&mut self, t: Instant) { diff --git a/src/kbucket/entry.rs b/src/kbucket/entry.rs index 97be95de1..72c4ac04b 100644 --- a/src/kbucket/entry.rs +++ b/src/kbucket/entry.rs @@ -175,12 +175,12 @@ where } /// Returns the value associated with the key. - pub fn value(&mut self) -> &mut TVal { + pub fn value(&self) -> &TVal { self.0 .bucket - .pending_mut() + .pending() .expect("We can only build a ConnectedPendingEntry if the entry is pending; QED") - .value_mut() + .value() } /// Updates the status of the pending entry. diff --git a/src/service.rs b/src/service.rs index 247280597..02ed226b2 100644 --- a/src/service.rs +++ b/src/service.rs @@ -620,11 +620,9 @@ impl Service { let enr = entry.value().clone(); to_request_enr = Some(enr); } - kbucket::Entry::Pending(ref mut entry, _) => { - if entry.value().seq() < enr_seq { - let enr = entry.value().clone(); - to_request_enr = Some(enr); - } + kbucket::Entry::Pending(ref entry, _) if entry.value().seq() < enr_seq => { + let enr = entry.value().clone(); + to_request_enr = Some(enr); } // don't know the peer, don't request its most recent ENR _ => {} @@ -1274,7 +1272,7 @@ impl Service { let must_update_enr = match self.kbuckets.write().entry(&key) { kbucket::Entry::Present(entry, _) => entry.value().seq() < enr.seq(), - kbucket::Entry::Pending(mut entry, _) => entry.value().seq() < enr.seq(), + kbucket::Entry::Pending(entry, _) => entry.value().seq() < enr.seq(), _ => false, }; @@ -1295,7 +1293,7 @@ impl Service { kbucket::Entry::Present(entry, _) if entry.value().seq() < enr.seq() => { entry.remove() } - kbucket::Entry::Pending(mut entry, _) => { + kbucket::Entry::Pending(entry, _) => { if entry.value().seq() < enr.seq() { entry.remove() } From 7fc9fbb6770a4762f1a778600b8d88dee861cff6 Mon Sep 17 00:00:00 2001 From: ackintosh Date: Tue, 28 Apr 2026 06:30:40 +0900 Subject: [PATCH 4/4] Simplify ENR seq check Fixes clippy::collapsible_match: https://rust-lang.github.io/rust-clippy/rust-1.95.0/index.html#collapsible_match --- src/service.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/service.rs b/src/service.rs index 02ed226b2..3b8b8d6f3 100644 --- a/src/service.rs +++ b/src/service.rs @@ -1293,10 +1293,8 @@ impl Service { kbucket::Entry::Present(entry, _) if entry.value().seq() < enr.seq() => { entry.remove() } - kbucket::Entry::Pending(entry, _) => { - if entry.value().seq() < enr.seq() { - entry.remove() - } + kbucket::Entry::Pending(entry, _) if entry.value().seq() < enr.seq() => { + entry.remove() } _ => {} }