diff --git a/crates/blockchain-tree/src/block_buffer.rs b/crates/blockchain-tree/src/block_buffer.rs index b0e2494658c8..cbdc692b588b 100644 --- a/crates/blockchain-tree/src/block_buffer.rs +++ b/crates/blockchain-tree/src/block_buffer.rs @@ -97,10 +97,7 @@ impl BlockBuffer { parent_hash: &BlockHash, ) -> Vec { // remove parent block if present - let mut removed = Vec::new(); - if let Some(block) = self.remove_block(parent_hash) { - removed.push(block); - } + let mut removed = self.remove_block(parent_hash).into_iter().collect::>(); removed.extend(self.remove_children(vec![*parent_hash])); self.metrics.blocks.set(self.blocks.len() as f64); @@ -157,14 +154,11 @@ impl BlockBuffer { /// The block might be missing from other collections, the method will only ensure that it has /// been removed. fn remove_block(&mut self, hash: &BlockHash) -> Option { - if let Some(block) = self.blocks.remove(hash) { - self.remove_from_earliest_blocks(block.number, hash); - self.remove_from_parent(block.parent_hash, hash); - self.lru.pop(hash); - Some(block) - } else { - None - } + let block = self.blocks.remove(hash)?; + self.remove_from_earliest_blocks(block.number, hash); + self.remove_from_parent(block.parent_hash, hash); + self.lru.pop(hash); + Some(block) } /// Remove all children and their descendants for the given blocks and return them. diff --git a/crates/blockchain-tree/src/block_indices.rs b/crates/blockchain-tree/src/block_indices.rs index 24c4aca64088..6e3cace070f0 100644 --- a/crates/blockchain-tree/src/block_indices.rs +++ b/crates/blockchain-tree/src/block_indices.rs @@ -224,12 +224,14 @@ impl BlockIndices { /// Remove chain from indices and return dependent chains that need to be removed. /// Does the cleaning of the tree and removing blocks from the chain. pub fn remove_chain(&mut self, chain: &Chain) -> BTreeSet { - let mut lose_chains = BTreeSet::new(); - for (block_number, block) in chain.blocks().iter() { - let block_hash = block.hash(); - lose_chains.extend(self.remove_block(*block_number, block_hash)) - } - lose_chains + chain + .blocks() + .iter() + .flat_map(|(block_number, block)| { + let block_hash = block.hash(); + self.remove_block(*block_number, block_hash) + }) + .collect() } /// Remove Blocks from indices. diff --git a/crates/net/common/src/bandwidth_meter.rs b/crates/net/common/src/bandwidth_meter.rs index a40f7432d1e8..aac8658a0e26 100644 --- a/crates/net/common/src/bandwidth_meter.rs +++ b/crates/net/common/src/bandwidth_meter.rs @@ -22,6 +22,7 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. +use crate::stream::HasRemoteAddr; use std::{ convert::TryFrom as _, io, @@ -38,8 +39,6 @@ use tokio::{ net::TcpStream, }; -use crate::stream::HasRemoteAddr; - /// Meters bandwidth usage of streams #[derive(Debug)] struct BandwidthMeterInner { diff --git a/crates/payload/basic/src/lib.rs b/crates/payload/basic/src/lib.rs index e4ba806cc21c..4f67d52f21e7 100644 --- a/crates/payload/basic/src/lib.rs +++ b/crates/payload/basic/src/lib.rs @@ -128,12 +128,7 @@ impl BasicPayloadJobGenerator Option { - let pre_cached = self.pre_cached.as_ref()?; - if pre_cached.block == parent { - Some(pre_cached.cached.clone()) - } else { - None - } + self.pre_cached.as_ref().filter(|pc| pc.block == parent).map(|pc| pc.cached.clone()) } } diff --git a/crates/rpc/ipc/src/client.rs b/crates/rpc/ipc/src/client.rs index 602da3d4126b..f4454958f237 100644 --- a/crates/rpc/ipc/src/client.rs +++ b/crates/rpc/ipc/src/client.rs @@ -74,10 +74,7 @@ impl TransportReceiverT for Receiver { /// Returns a Future resolving when the server sent us something back. async fn receive(&mut self) -> Result { - match self.inner.next().await { - None => Err(IpcError::Closed), - Some(val) => Ok(ReceivedMessage::Text(val?)), - } + self.inner.next().await.map_or(Err(IpcError::Closed), |val| Ok(ReceivedMessage::Text(val?))) } } diff --git a/crates/rpc/ipc/src/server/connection.rs b/crates/rpc/ipc/src/server/connection.rs index bd4be7c3e7d4..abeba7bbf0a6 100644 --- a/crates/rpc/ipc/src/server/connection.rs +++ b/crates/rpc/ipc/src/server/connection.rs @@ -35,11 +35,10 @@ where /// Polls to accept a new incoming connection to the endpoint. pub(crate) fn poll_accept(&mut self, cx: &mut Context<'_>) -> Poll<::Item> { - let res = match ready!(self.poll_next_unpin(cx)) { - None => Err(io::Error::new(io::ErrorKind::ConnectionAborted, "ipc connection closed")), - Some(conn) => conn, - }; - Poll::Ready(res) + Poll::Ready(ready!(self.poll_next_unpin(cx)).map_or( + Err(io::Error::new(io::ErrorKind::ConnectionAborted, "ipc connection closed")), + |conn| conn, + )) } }