Skip to content

Commit 807036b

Browse files
authored
refactor(wallets): reduce iterator cloning (#11931)
1 parent 3b72728 commit 807036b

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

crates/wallets/src/multi_wallet.rs

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -308,16 +308,18 @@ impl MultiWalletOpts {
308308
let mut signers = Vec::new();
309309

310310
let mut passwords_iter =
311-
self.keystore_passwords.clone().unwrap_or_default().into_iter();
311+
self.keystore_passwords.iter().flat_map(|passwords| passwords.iter());
312312

313-
let mut password_files_iter =
314-
self.keystore_password_files.clone().unwrap_or_default().into_iter();
313+
let mut password_files_iter = self
314+
.keystore_password_files
315+
.iter()
316+
.flat_map(|password_files| password_files.iter());
315317

316318
for path in &keystore_paths {
317319
let (maybe_signer, maybe_pending) = utils::create_keystore_signer(
318320
path,
319-
passwords_iter.next().as_deref(),
320-
password_files_iter.next().as_deref(),
321+
passwords_iter.next().map(|password| password.as_str()),
322+
password_files_iter.next().map(|password_file| password_file.as_str()),
321323
)?;
322324
if let Some(pending_signer) = maybe_pending {
323325
pending.push(pending_signer);
@@ -334,18 +336,22 @@ impl MultiWalletOpts {
334336
if let Some(ref mnemonics) = self.mnemonics {
335337
let mut wallets = vec![];
336338

337-
let mut hd_paths_iter = self.hd_paths.clone().unwrap_or_default().into_iter();
339+
let mut hd_paths_iter =
340+
self.hd_paths.iter().flat_map(|paths| paths.iter().map(String::as_str));
338341

339-
let mut passphrases_iter =
340-
self.mnemonic_passphrases.clone().unwrap_or_default().into_iter();
342+
let mut passphrases_iter = self
343+
.mnemonic_passphrases
344+
.iter()
345+
.flat_map(|passphrases| passphrases.iter().map(String::as_str));
341346

342-
let mut indexes_iter = self.mnemonic_indexes.clone().unwrap_or_default().into_iter();
347+
let mut indexes_iter =
348+
self.mnemonic_indexes.iter().flat_map(|indexes| indexes.iter().copied());
343349

344350
for mnemonic in mnemonics {
345351
let wallet = utils::create_mnemonic_signer(
346352
mnemonic,
347-
passphrases_iter.next().as_deref(),
348-
hd_paths_iter.next().as_deref(),
353+
passphrases_iter.next(),
354+
hd_paths_iter.next(),
349355
indexes_iter.next().unwrap_or(0),
350356
)?;
351357
wallets.push(wallet);

0 commit comments

Comments
 (0)