From d9919b99d2ba51b7ec806705bfa73489378280c9 Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Tue, 19 May 2020 19:13:41 -0600 Subject: [PATCH] Remove folds (#10128) automerge --- bench-exchange/src/bench.rs | 10 +++-- cli/src/cluster_query.rs | 6 ++- core/src/non_circulating_supply.rs | 3 +- ledger-tool/src/main.rs | 3 +- remote-wallet/src/remote_wallet.rs | 66 +++++++++++++----------------- sdk/src/hard_forks.rs | 12 +++--- watchtower/src/main.rs | 6 ++- 7 files changed, 52 insertions(+), 54 deletions(-) diff --git a/bench-exchange/src/bench.rs b/bench-exchange/src/bench.rs index b07aa711e..f146b0953 100644 --- a/bench-exchange/src/bench.rs +++ b/bench-exchange/src/bench.rs @@ -760,9 +760,10 @@ pub fn fund_keys(client: &T, source: &Keypair, dests: &[Arc] let mut retries = 0; let amount = chunk[0].1[0].1; while !to_fund_txs.is_empty() { - let receivers = to_fund_txs + let receivers: usize = to_fund_txs .iter() - .fold(0, |len, (_, tx)| len + tx.message().instructions.len()); + .map(|(_, tx)| tx.message().instructions.len()) + .sum(); debug!( " {} to {} in {} txs", @@ -854,9 +855,10 @@ pub fn create_token_accounts( }) .collect(); - let accounts = to_create_txs + let accounts: usize = to_create_txs .iter() - .fold(0, |len, (_, tx)| len + tx.message().instructions.len() / 2); + .map(|(_, tx)| tx.message().instructions.len() / 2) + .sum(); debug!( " Creating {} accounts in {} txs", diff --git a/cli/src/cluster_query.rs b/cli/src/cluster_query.rs index f35d0a9a0..3ae342156 100644 --- a/cli/src/cluster_query.rs +++ b/cli/src/cluster_query.rs @@ -1227,12 +1227,14 @@ pub fn process_show_validators( .current .iter() .chain(vote_accounts.delinquent.iter()) - .fold(0, |acc, vote_account| acc + vote_account.activated_stake); + .map(|vote_account| vote_account.activated_stake) + .sum(); let total_deliquent_stake = vote_accounts .delinquent .iter() - .fold(0, |acc, vote_account| acc + vote_account.activated_stake); + .map(|vote_account| vote_account.activated_stake) + .sum(); let total_current_stake = total_active_stake - total_deliquent_stake; let mut current = vote_accounts.current; diff --git a/core/src/non_circulating_supply.rs b/core/src/non_circulating_supply.rs index 08b459fb4..428739567 100644 --- a/core/src/non_circulating_supply.rs +++ b/core/src/non_circulating_supply.rs @@ -42,7 +42,8 @@ pub fn calculate_non_circulating_supply(bank: Arc) -> NonCirculatingSupply let lamports = non_circulating_accounts_set .iter() - .fold(0, |acc, pubkey| acc + bank.get_balance(&pubkey)); + .map(|pubkey| bank.get_balance(&pubkey)) + .sum(); NonCirculatingSupply { lamports, diff --git a/ledger-tool/src/main.rs b/ledger-tool/src/main.rs index 025ad0c0a..9677a26fc 100644 --- a/ledger-tool/src/main.rs +++ b/ledger-tool/src/main.rs @@ -209,7 +209,8 @@ fn graph_forks(bank_forks: &BankForks, include_all_votes: bool) -> String { let total_stake = bank .vote_accounts() .iter() - .fold(0, |acc, (_, (stake, _))| acc + stake); + .map(|(_, (stake, _))| stake) + .sum(); for (_, (stake, vote_account)) in bank.vote_accounts() { let vote_state = VoteState::from(&vote_account).unwrap_or_default(); if let Some(last_vote) = vote_state.votes.iter().last() { diff --git a/remote-wallet/src/remote_wallet.rs b/remote-wallet/src/remote_wallet.rs index 5ec212add..3cf4485ca 100644 --- a/remote-wallet/src/remote_wallet.rs +++ b/remote-wallet/src/remote_wallet.rs @@ -104,46 +104,36 @@ impl RemoteWalletManager { let devices = usb.device_list(); let num_prev_devices = self.devices.read().len(); - let (detected_devices, errors) = devices - .filter(|&device_info| { - is_valid_hid_device(device_info.usage_page(), device_info.interface_number()) - }) - .fold( - (Vec::new(), Vec::new()), - |(mut devices, mut errors), device_info| { - if is_valid_ledger(device_info.vendor_id(), device_info.product_id()) { - match usb.open_path(&device_info.path()) { - Ok(device) => { - let mut ledger = LedgerWallet::new(device); - let result = ledger.read_device(&device_info); - match result { - Ok(info) => { - ledger.pretty_path = info.get_pretty_path(); - let path = device_info.path().to_str().unwrap().to_string(); - trace!("Found device: {:?}", info); - devices.push(Device { - path, - info, - wallet_type: RemoteWalletType::Ledger(Arc::new(ledger)), - }) - } - Err(err) => { - error!( - "Error connecting to ledger device to read info: {}", - err - ); - errors.push(err) - } - } - } - Err(err) => { - error!("Error connecting to ledger device to read info: {}", err) - } + let mut detected_devices = vec![]; + let mut errors = vec![]; + for device_info in devices.filter(|&device_info| { + is_valid_hid_device(device_info.usage_page(), device_info.interface_number()) + && is_valid_ledger(device_info.vendor_id(), device_info.product_id()) + }) { + match usb.open_path(&device_info.path()) { + Ok(device) => { + let mut ledger = LedgerWallet::new(device); + let result = ledger.read_device(&device_info); + match result { + Ok(info) => { + ledger.pretty_path = info.get_pretty_path(); + let path = device_info.path().to_str().unwrap().to_string(); + trace!("Found device: {:?}", info); + detected_devices.push(Device { + path, + info, + wallet_type: RemoteWalletType::Ledger(Arc::new(ledger)), + }) + } + Err(err) => { + error!("Error connecting to ledger device to read info: {}", err); + errors.push(err) } } - (devices, errors) - }, - ); + } + Err(err) => error!("Error connecting to ledger device to read info: {}", err), + } + } let num_curr_devices = detected_devices.len(); *self.devices.write() = detected_devices; diff --git a/sdk/src/hard_forks.rs b/sdk/src/hard_forks.rs index 0627ebc20..03d32588d 100644 --- a/sdk/src/hard_forks.rs +++ b/sdk/src/hard_forks.rs @@ -3,7 +3,6 @@ use byteorder::{ByteOrder, LittleEndian}; use solana_sdk::clock::Slot; -use std::ops::Add; #[derive(Default, Clone, Deserialize, Serialize)] pub struct HardForks { @@ -34,16 +33,17 @@ impl HardForks { // The expected number of hard forks in a cluster is small. // If this turns out to be false then a more efficient data // structure may be needed here to avoid this linear search - let fork_count = self + let fork_count: usize = self .hard_forks .iter() - .fold(0, |acc, (fork_slot, fork_count)| { - acc.add(if parent_slot < *fork_slot && slot >= *fork_slot { + .map(|(fork_slot, fork_count)| { + if parent_slot < *fork_slot && slot >= *fork_slot { *fork_count } else { 0 - }) - }); + } + }) + .sum(); if fork_count > 0 { let mut buf = [0u8; 8]; diff --git a/watchtower/src/main.rs b/watchtower/src/main.rs index 621f32fec..1372fb91c 100644 --- a/watchtower/src/main.rs +++ b/watchtower/src/main.rs @@ -323,11 +323,13 @@ fn main() -> Result<(), Box> { let total_current_stake = vote_accounts .current .iter() - .fold(0, |acc, vote_account| acc + vote_account.activated_stake); + .map(|vote_account| vote_account.activated_stake) + .sum(); let total_delinquent_stake = vote_accounts .delinquent .iter() - .fold(0, |acc, vote_account| acc + vote_account.activated_stake); + .map(|vote_account| vote_account.activated_stake) + .sum(); let total_stake = total_current_stake + total_delinquent_stake; let current_stake_percent = total_current_stake * 100 / total_stake;