From 0235abfac2fabd039a3171f72ade633ab4086f08 Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Mon, 7 Dec 2020 16:41:57 +0100 Subject: [PATCH] Improving PSBT merge with dedicated 1.29 rustc borrow scope --- src/util/psbt/map/global.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/util/psbt/map/global.rs b/src/util/psbt/map/global.rs index 04b703ad..fc6b6f06 100644 --- a/src/util/psbt/map/global.rs +++ b/src/util/psbt/map/global.rs @@ -173,12 +173,13 @@ impl Map for Global { // 3) choose longest derivation; if equal // 4) choose largest fingerprint; if equal // 5) do nothing - // Clone is required for Rust 1.29 borrow checker - let (fingerprint2, derivation2) = entry.get().clone(); + let (fingerprint2, len2, normal_len2) = { + // weird scope needed for rustc 1.29 borrow checker + let (fp, deriv) = entry.get().clone(); + (fp, deriv.len(), deriv.into_iter().rposition(ChildNumber::is_normal)) + }; let len1 = derivation1.len(); - let len2 = derivation2.len(); let normal_len1 = derivation1.into_iter().rposition(ChildNumber::is_normal); - let normal_len2 = derivation2.into_iter().rposition(ChildNumber::is_normal); match (normal_len1.cmp(&normal_len2), len1.cmp(&len2), fingerprint1.cmp(&fingerprint2)) { (Ordering::Equal, Ordering::Equal, Ordering::Equal) => {}, (Ordering::Equal, _, Ordering::Equal) => {