diff --git a/.cargo/config.toml b/.cargo/config.toml index 3f2c1e603f38..95976aaa8001 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,3 +1,3 @@ [alias] # Temporary solution to have clippy config in a single place until https://github.com/rust-lang/rust-clippy/blob/master/doc/roadmap-2021.md#lintstoml-configuration is shipped. -custom-clippy = "clippy -- -A clippy::type_complexity -A clippy::pedantic -A clippy::style -D warnings" +custom-clippy = "clippy -- -A clippy::type_complexity -A clippy::pedantic -D warnings" diff --git a/core/src/transport/memory.rs b/core/src/transport/memory.rs index 02e21e7effa9..40bc5d3da15a 100644 --- a/core/src/transport/memory.rs +++ b/core/src/transport/memory.rs @@ -150,9 +150,12 @@ impl Future for DialFuture { .take() .expect("Future should not be polled again once complete"); let dial_port = self.dial_port; - match self.sender.start_send((channel_to_send, dial_port)) { - Err(_) => return Poll::Ready(Err(MemoryTransportError::Unreachable)), - Ok(()) => {} + if self + .sender + .start_send((channel_to_send, dial_port)) + .is_err() + { + return Poll::Ready(Err(MemoryTransportError::Unreachable)); } Poll::Ready(Ok(self diff --git a/misc/metrics/src/gossipsub.rs b/misc/metrics/src/gossipsub.rs index e2a567f99be5..0bb6af5f452d 100644 --- a/misc/metrics/src/gossipsub.rs +++ b/misc/metrics/src/gossipsub.rs @@ -42,11 +42,8 @@ impl Metrics { impl super::Recorder for super::Metrics { fn record(&self, event: &libp2p_gossipsub::GossipsubEvent) { - match event { - libp2p_gossipsub::GossipsubEvent::Message { .. } => { - self.gossipsub.messages.inc(); - } - _ => {} + if let libp2p_gossipsub::GossipsubEvent::Message { .. } = event { + self.gossipsub.messages.inc(); } } } diff --git a/protocols/gossipsub/src/behaviour.rs b/protocols/gossipsub/src/behaviour.rs index 583af5ec1cbe..ff7fa8c1504d 100644 --- a/protocols/gossipsub/src/behaviour.rs +++ b/protocols/gossipsub/src/behaviour.rs @@ -1226,19 +1226,19 @@ where } for id in ids { - if !self.duplicate_cache.contains(&id) && !self.pending_iwant_msgs.contains(&id) { - if self + if !self.duplicate_cache.contains(&id) + && !self.pending_iwant_msgs.contains(&id) + && self .peer_score .as_ref() .map(|(_, _, _, promises)| !promises.contains(&id)) .unwrap_or(true) - { - // have not seen this message and are not currently requesting it - if iwant_ids.insert(id) { - // Register the IWANT metric - if let Some(metrics) = self.metrics.as_mut() { - metrics.register_iwant(&topic); - } + { + // have not seen this message and are not currently requesting it + if iwant_ids.insert(id) { + // Register the IWANT metric + if let Some(metrics) = self.metrics.as_mut() { + metrics.register_iwant(&topic); } } } @@ -1353,7 +1353,7 @@ where } else if let Some(m) = self.metrics.as_mut() { // Sending of messages succeeded, register them on the internal metrics. for topic in topics.iter() { - m.msg_sent(&topic, msg_bytes); + m.msg_sent(topic, msg_bytes); } } } @@ -2136,7 +2136,7 @@ where for peer_id in self.connected_peers.keys() { scores .entry(peer_id) - .or_insert_with(|| peer_score.metric_score(&peer_id, self.metrics.as_mut())); + .or_insert_with(|| peer_score.metric_score(peer_id, self.metrics.as_mut())); } } diff --git a/protocols/gossipsub/src/mcache.rs b/protocols/gossipsub/src/mcache.rs index 58f398ba9cc4..6d1c0465a76e 100644 --- a/protocols/gossipsub/src/mcache.rs +++ b/protocols/gossipsub/src/mcache.rs @@ -148,7 +148,7 @@ impl MessageCache { message.validated = true; // Clear the known peers list (after a message is validated, it is forwarded and we no // longer need to store the originating peers). - let originating_peers = std::mem::replace(known_peers, HashSet::new()); + let originating_peers = std::mem::take(known_peers); (&*message, originating_peers) }) } diff --git a/protocols/gossipsub/src/metrics.rs b/protocols/gossipsub/src/metrics.rs index e813140f759d..eb33b54210c2 100644 --- a/protocols/gossipsub/src/metrics.rs +++ b/protocols/gossipsub/src/metrics.rs @@ -517,9 +517,7 @@ impl Metrics { let metric = self .peers_per_protocol .get_or_create(&ProtocolLabel { protocol: kind }); - if metric.get() == 0 { - return; - } else { + if metric.get() != 0 { // decrement the counter metric.set(metric.get() - 1); } diff --git a/protocols/gossipsub/src/peer_score.rs b/protocols/gossipsub/src/peer_score.rs index d8d0650daf70..4c7a09bbcb2b 100644 --- a/protocols/gossipsub/src/peer_score.rs +++ b/protocols/gossipsub/src/peer_score.rs @@ -860,7 +860,7 @@ impl PeerScore { //should always be true let window_time = validated_time .checked_add(topic_params.mesh_message_deliveries_window) - .unwrap_or_else(|| *now); + .unwrap_or(*now); if now > &window_time { falls_in_mesh_deliver_window = false; } diff --git a/protocols/identify/src/identify.rs b/protocols/identify/src/identify.rs index f39e9d6900e1..20daddcc38dc 100644 --- a/protocols/identify/src/identify.rs +++ b/protocols/identify/src/identify.rs @@ -196,16 +196,14 @@ impl Identify { I: IntoIterator, { for p in peers { - if self.pending_push.insert(p) { - if !self.connected.contains_key(&p) { - let handler = self.new_handler(); - self.events.push_back(NetworkBehaviourAction::Dial { - opts: DialOpts::peer_id(p) - .condition(dial_opts::PeerCondition::Disconnected) - .build(), - handler, - }); - } + if self.pending_push.insert(p) && !self.connected.contains_key(&p) { + let handler = self.new_handler(); + self.events.push_back(NetworkBehaviourAction::Dial { + opts: DialOpts::peer_id(p) + .condition(dial_opts::PeerCondition::Disconnected) + .build(), + handler, + }); } } } @@ -240,7 +238,7 @@ impl NetworkBehaviour for Identify { if let Some(entry) = self.discovered_peers.get_mut(peer_id) { for addr in failed_addresses .into_iter() - .flat_map(|addresses| addresses.into_iter()) + .flat_map(|addresses| addresses.iter()) { entry.remove(addr); } @@ -451,7 +449,7 @@ impl NetworkBehaviour for Identify { self.discovered_peers .get(peer) .cloned() - .map(|addr| Vec::from_iter(addr)) + .map(Vec::from_iter) .unwrap_or_default() } } @@ -510,7 +508,7 @@ fn multiaddr_matches_peer_id(addr: &Multiaddr, peer_id: &PeerId) -> bool { if let Some(Protocol::P2p(multi_addr_peer_id)) = last_component { return multi_addr_peer_id == *peer_id.as_ref(); } - return true; + true } #[cfg(test)] diff --git a/protocols/kad/src/addresses.rs b/protocols/kad/src/addresses.rs index f5bdd4d0fbc9..3c2af4173fde 100644 --- a/protocols/kad/src/addresses.rs +++ b/protocols/kad/src/addresses.rs @@ -65,6 +65,7 @@ impl Addresses { /// /// An address should only be removed if is determined to be invalid or /// otherwise unreachable. + #[allow(clippy::result_unit_err)] pub fn remove(&mut self, addr: &Multiaddr) -> Result<(), ()> { if self.addrs.len() == 1 { return Err(()); diff --git a/protocols/kad/src/behaviour.rs b/protocols/kad/src/behaviour.rs index b6a7dc329548..d5b322e096a7 100644 --- a/protocols/kad/src/behaviour.rs +++ b/protocols/kad/src/behaviour.rs @@ -1825,7 +1825,7 @@ where errors: Option<&Vec>, other_established: usize, ) { - for addr in errors.map(|a| a.into_iter()).into_iter().flatten() { + for addr in errors.map(|a| a.iter()).into_iter().flatten() { self.address_failed(*peer_id, addr); } diff --git a/protocols/kad/src/jobs.rs b/protocols/kad/src/jobs.rs index 7ce201a4150f..17235f207413 100644 --- a/protocols/kad/src/jobs.rs +++ b/protocols/kad/src/jobs.rs @@ -108,6 +108,7 @@ impl PeriodicJob { /// Returns `true` if the job is currently not running but ready /// to be run, `false` otherwise. + #[allow(clippy::wrong_self_convention)] fn is_ready(&mut self, cx: &mut Context<'_>, now: Instant) -> bool { if let PeriodicJobState::Waiting(delay, deadline) = &mut self.state { if now >= *deadline || !Future::poll(Pin::new(delay), cx).is_pending() { diff --git a/protocols/kad/src/kbucket/bucket.rs b/protocols/kad/src/kbucket/bucket.rs index b9d34519d5df..92dc6c57a6be 100644 --- a/protocols/kad/src/kbucket/bucket.rs +++ b/protocols/kad/src/kbucket/bucket.rs @@ -365,11 +365,11 @@ where // Adjust `first_connected_pos` accordingly. match status { NodeStatus::Connected => { - if self.first_connected_pos.map_or(false, |p| p == pos.0) { - if pos.0 == self.nodes.len() { - // It was the last connected node. - self.first_connected_pos = None - } + if self.first_connected_pos.map_or(false, |p| p == pos.0) + && pos.0 == self.nodes.len() + { + // It was the last connected node. + self.first_connected_pos = None } } NodeStatus::Disconnected => { diff --git a/protocols/kad/src/kbucket/key.rs b/protocols/kad/src/kbucket/key.rs index ca3444da6361..9133757a0ff8 100644 --- a/protocols/kad/src/kbucket/key.rs +++ b/protocols/kad/src/kbucket/key.rs @@ -86,9 +86,9 @@ impl Key { } } -impl Into for Key { - fn into(self) -> KeyBytes { - self.bytes +impl From> for KeyBytes { + fn from(key: Key) -> KeyBytes { + key.bytes } } diff --git a/protocols/mdns/src/behaviour.rs b/protocols/mdns/src/behaviour.rs index 1c22a068b719..c844f742af91 100644 --- a/protocols/mdns/src/behaviour.rs +++ b/protocols/mdns/src/behaviour.rs @@ -122,7 +122,7 @@ impl NetworkBehaviour for Mdns { fn inject_new_listen_addr(&mut self, _id: ListenerId, _addr: &Multiaddr) { log::trace!("waking interface state because listening address changed"); - for (_, iface) in &mut self.iface_states { + for iface in self.iface_states.values_mut() { iface.fire_timer(); } } @@ -178,7 +178,7 @@ impl NetworkBehaviour for Mdns { } // Emit discovered event. let mut discovered = SmallVec::<[(PeerId, Multiaddr); 4]>::new(); - for (_, iface_state) in &mut self.iface_states { + for iface_state in self.iface_states.values_mut() { while let Some((peer, addr, expiration)) = iface_state.poll(cx, params) { if let Some((_, _, cur_expires)) = self .discovered_nodes diff --git a/protocols/ping/src/handler.rs b/protocols/ping/src/handler.rs index 87937687591e..850f4ebc05f3 100644 --- a/protocols/ping/src/handler.rs +++ b/protocols/ping/src/handler.rs @@ -116,6 +116,12 @@ impl Config { } } +impl Default for Config { + fn default() -> Self { + Self::new() + } +} + /// The successful result of processing an inbound or outbound ping. #[derive(Debug)] pub enum Success { diff --git a/protocols/relay/src/v2/client.rs b/protocols/relay/src/v2/client.rs index 139e4a8b7e54..e670d24e3e1c 100644 --- a/protocols/relay/src/v2/client.rs +++ b/protocols/relay/src/v2/client.rs @@ -313,7 +313,7 @@ impl NetworkBehaviour for Client { ), }; - return Poll::Ready(action); + Poll::Ready(action) } } diff --git a/protocols/relay/src/v2/client/transport.rs b/protocols/relay/src/v2/client/transport.rs index 40eb6031fcc4..5414353786ca 100644 --- a/protocols/relay/src/v2/client/transport.rs +++ b/protocols/relay/src/v2/client/transport.rs @@ -211,7 +211,7 @@ impl Transport for ClientTransport { // traversal. One would coordinate such traversal via a previously // established relayed connection, but never using a relayed connection // itself. - return Err(TransportError::MultiaddrNotSupported(addr)); + Err(TransportError::MultiaddrNotSupported(addr)) } fn address_translation(&self, _server: &Multiaddr, _observed: &Multiaddr) -> Option { @@ -244,7 +244,7 @@ fn parse_relayed_multiaddr( if before_circuit { before_circuit = false; } else { - Err(RelayError::MultipleCircuitRelayProtocolsUnsupported)?; + return Err(RelayError::MultipleCircuitRelayProtocolsUnsupported.into()); } } Protocol::P2p(hash) => { @@ -252,12 +252,12 @@ fn parse_relayed_multiaddr( if before_circuit { if relayed_multiaddr.relay_peer_id.is_some() { - Err(RelayError::MalformedMultiaddr)?; + return Err(RelayError::MalformedMultiaddr.into()); } relayed_multiaddr.relay_peer_id = Some(peer_id) } else { if relayed_multiaddr.dst_peer_id.is_some() { - Err(RelayError::MalformedMultiaddr)?; + return Err(RelayError::MalformedMultiaddr.into()); } relayed_multiaddr.dst_peer_id = Some(peer_id) } diff --git a/protocols/relay/src/v2/protocol/inbound_hop.rs b/protocols/relay/src/v2/protocol/inbound_hop.rs index 878d85cc4e04..36b4079153d8 100644 --- a/protocols/relay/src/v2/protocol/inbound_hop.rs +++ b/protocols/relay/src/v2/protocol/inbound_hop.rs @@ -86,7 +86,9 @@ impl upgrade::InboundUpgrade for Upgrade { .map_err(|_| FatalUpgradeError::ParsePeerId)?; Req::Connect(CircuitReq { dst, substream }) } - hop_message::Type::Status => Err(FatalUpgradeError::UnexpectedTypeStatus)?, + hop_message::Type::Status => { + return Err(FatalUpgradeError::UnexpectedTypeStatus.into()) + } }; Ok(req) diff --git a/protocols/relay/src/v2/protocol/inbound_stop.rs b/protocols/relay/src/v2/protocol/inbound_stop.rs index d38e72c16278..0f3919a84d9b 100644 --- a/protocols/relay/src/v2/protocol/inbound_stop.rs +++ b/protocols/relay/src/v2/protocol/inbound_stop.rs @@ -78,7 +78,7 @@ impl upgrade::InboundUpgrade for Upgrade { limit: limit.map(Into::into), }) } - stop_message::Type::Status => Err(FatalUpgradeError::UnexpectedTypeStatus)?, + stop_message::Type::Status => Err(FatalUpgradeError::UnexpectedTypeStatus.into()), } } .boxed() diff --git a/protocols/relay/src/v2/protocol/outbound_hop.rs b/protocols/relay/src/v2/protocol/outbound_hop.rs index bbd2e0735ee4..472efbe33c9d 100644 --- a/protocols/relay/src/v2/protocol/outbound_hop.rs +++ b/protocols/relay/src/v2/protocol/outbound_hop.rs @@ -100,8 +100,12 @@ impl upgrade::OutboundUpgrade for Upgrade { let r#type = hop_message::Type::from_i32(r#type).ok_or(FatalUpgradeError::ParseTypeField)?; match r#type { - hop_message::Type::Connect => Err(FatalUpgradeError::UnexpectedTypeConnect)?, - hop_message::Type::Reserve => Err(FatalUpgradeError::UnexpectedTypeReserve)?, + hop_message::Type::Connect => { + return Err(FatalUpgradeError::UnexpectedTypeConnect.into()) + } + hop_message::Type::Reserve => { + return Err(FatalUpgradeError::UnexpectedTypeReserve.into()) + } hop_message::Type::Status => {} } @@ -114,18 +118,20 @@ impl upgrade::OutboundUpgrade for Upgrade { Upgrade::Reserve => { match status { Status::Ok => {} - Status::ReservationRefused => Err(ReservationFailedReason::Refused)?, + Status::ReservationRefused => { + return Err(ReservationFailedReason::Refused.into()) + } Status::ResourceLimitExceeded => { - Err(ReservationFailedReason::ResourceLimitExceeded)? + return Err(ReservationFailedReason::ResourceLimitExceeded.into()) } - s => Err(FatalUpgradeError::UnexpectedStatus(s))?, + s => return Err(FatalUpgradeError::UnexpectedStatus(s).into()), } let reservation = reservation.ok_or(FatalUpgradeError::MissingReservationField)?; if reservation.addrs.is_empty() { - Err(FatalUpgradeError::NoAddressesInReservation)?; + return Err(FatalUpgradeError::NoAddressesInReservation.into()); } let addrs = reservation @@ -161,12 +167,18 @@ impl upgrade::OutboundUpgrade for Upgrade { match status { Status::Ok => {} Status::ResourceLimitExceeded => { - Err(CircuitFailedReason::ResourceLimitExceeded)? + return Err(CircuitFailedReason::ResourceLimitExceeded.into()) + } + Status::ConnectionFailed => { + return Err(CircuitFailedReason::ConnectionFailed.into()) + } + Status::NoReservation => { + return Err(CircuitFailedReason::NoReservation.into()) + } + Status::PermissionDenied => { + return Err(CircuitFailedReason::PermissionDenied.into()) } - Status::ConnectionFailed => Err(CircuitFailedReason::ConnectionFailed)?, - Status::NoReservation => Err(CircuitFailedReason::NoReservation)?, - Status::PermissionDenied => Err(CircuitFailedReason::PermissionDenied)?, - s => Err(FatalUpgradeError::UnexpectedStatus(s))?, + s => return Err(FatalUpgradeError::UnexpectedStatus(s).into()), } let FramedParts { diff --git a/protocols/relay/src/v2/protocol/outbound_stop.rs b/protocols/relay/src/v2/protocol/outbound_stop.rs index ae93dbe92e50..ad74182a9c98 100644 --- a/protocols/relay/src/v2/protocol/outbound_stop.rs +++ b/protocols/relay/src/v2/protocol/outbound_stop.rs @@ -97,7 +97,9 @@ impl upgrade::OutboundUpgrade for Upgrade { let r#type = stop_message::Type::from_i32(r#type).ok_or(FatalUpgradeError::ParseTypeField)?; match r#type { - stop_message::Type::Connect => Err(FatalUpgradeError::UnexpectedTypeConnect)?, + stop_message::Type::Connect => { + return Err(FatalUpgradeError::UnexpectedTypeConnect.into()) + } stop_message::Type::Status => {} } @@ -105,9 +107,13 @@ impl upgrade::OutboundUpgrade for Upgrade { .ok_or(FatalUpgradeError::ParseStatusField)?; match status { Status::Ok => {} - Status::ResourceLimitExceeded => Err(CircuitFailedReason::ResourceLimitExceeded)?, - Status::PermissionDenied => Err(CircuitFailedReason::PermissionDenied)?, - s => Err(FatalUpgradeError::UnexpectedStatus(s))?, + Status::ResourceLimitExceeded => { + return Err(CircuitFailedReason::ResourceLimitExceeded.into()) + } + Status::PermissionDenied => { + return Err(CircuitFailedReason::PermissionDenied.into()) + } + s => return Err(FatalUpgradeError::UnexpectedStatus(s).into()), } let FramedParts { diff --git a/protocols/relay/src/v2/relay.rs b/protocols/relay/src/v2/relay.rs index e5f2cdbfe779..353218453f1a 100644 --- a/protocols/relay/src/v2/relay.rs +++ b/protocols/relay/src/v2/relay.rs @@ -238,7 +238,7 @@ impl NetworkBehaviour for Relay { _remaining_established: usize, ) { if let hash_map::Entry::Occupied(mut peer) = self.reservations.entry(*peer) { - peer.get_mut().remove(&connection); + peer.get_mut().remove(connection); if peer.get().is_empty() { peer.remove(); } diff --git a/protocols/rendezvous/src/codec.rs b/protocols/rendezvous/src/codec.rs index d8d54d91177c..c4e1ffdc74f1 100644 --- a/protocols/rendezvous/src/codec.rs +++ b/protocols/rendezvous/src/codec.rs @@ -254,6 +254,7 @@ impl Decoder for RendezvousCodec { } } +#[allow(clippy::enum_variant_names)] #[derive(Debug, thiserror::Error)] pub enum Error { #[error("Failed to encode message as bytes")] diff --git a/protocols/rendezvous/src/handler/inbound.rs b/protocols/rendezvous/src/handler/inbound.rs index d4452b5758f3..3f432bee6bd0 100644 --- a/protocols/rendezvous/src/handler/inbound.rs +++ b/protocols/rendezvous/src/handler/inbound.rs @@ -32,6 +32,7 @@ use std::task::{Context, Poll}; /// The state of an inbound substream (i.e. the remote node opened it). #[allow(clippy::large_enum_variant)] +#[allow(clippy::enum_variant_names)] pub enum Stream { /// We are in the process of reading a message from the substream. PendingRead(Framed), @@ -55,6 +56,7 @@ impl fmt::Debug for Stream { } #[allow(clippy::large_enum_variant)] +#[allow(clippy::enum_variant_names)] #[derive(Debug, Clone)] pub enum OutEvent { RegistrationRequested(NewRegistration), diff --git a/protocols/rendezvous/src/handler/outbound.rs b/protocols/rendezvous/src/handler/outbound.rs index c1356ee29d08..d461e7c72942 100644 --- a/protocols/rendezvous/src/handler/outbound.rs +++ b/protocols/rendezvous/src/handler/outbound.rs @@ -121,6 +121,7 @@ pub enum OutEvent { } #[allow(clippy::large_enum_variant)] +#[allow(clippy::enum_variant_names)] #[derive(Debug)] pub enum OpenInfo { RegisterRequest(NewRegistration), diff --git a/protocols/rendezvous/src/substream_handler.rs b/protocols/rendezvous/src/substream_handler.rs index 2a4be470b18e..f57dfded6c9a 100644 --- a/protocols/rendezvous/src/substream_handler.rs +++ b/protocols/rendezvous/src/substream_handler.rs @@ -274,6 +274,7 @@ where } /// Event sent from the [`libp2p_swarm::NetworkBehaviour`] to the [`SubstreamConnectionHandler`]. +#[allow(clippy::enum_variant_names)] #[derive(Debug)] pub enum InEvent { /// Open a new substream using the provided `open_info`. diff --git a/protocols/request-response/src/lib.rs b/protocols/request-response/src/lib.rs index a0c53101307c..f8a4e2eb3a94 100644 --- a/protocols/request-response/src/lib.rs +++ b/protocols/request-response/src/lib.rs @@ -706,7 +706,7 @@ where self.pending_events .push_back(NetworkBehaviourAction::GenerateEvent( RequestResponseEvent::OutboundFailure { - peer: peer, + peer, request_id: request.request_id, error: OutboundFailure::DialFailure, }, diff --git a/swarm/src/connection.rs b/swarm/src/connection.rs index ed90da0f63cc..90dcabe9f468 100644 --- a/swarm/src/connection.rs +++ b/swarm/src/connection.rs @@ -176,6 +176,7 @@ pub struct IncomingInfo<'a> { impl<'a> IncomingInfo<'a> { /// Builds the [`ConnectedPoint`] corresponding to the incoming connection. + #[allow(clippy::wrong_self_convention)] pub fn to_connected_point(&self) -> ConnectedPoint { ConnectedPoint::Listener { local_addr: self.local_addr.clone(), diff --git a/swarm/src/lib.rs b/swarm/src/lib.rs index 4c3a16fecda6..03533b283770 100644 --- a/swarm/src/lib.rs +++ b/swarm/src/lib.rs @@ -633,6 +633,7 @@ where /// collaborative manner across [`ConnectionHandler`]s /// with [`ConnectionHandler::connection_keep_alive`] or directly with /// [`ConnectionHandlerEvent::Close`]. + #[allow(clippy::result_unit_err)] pub fn disconnect_peer_id(&mut self, peer_id: PeerId) -> Result<(), ()> { let was_connected = self.pool.is_connected(peer_id); self.pool.disconnect(peer_id);