@@ -86,6 +86,7 @@ pub(crate) enum BlindedPaymentTlvs {
86
86
}
87
87
88
88
// Used to include forward and receive TLVs in the same iterator for encoding.
89
+ #[ derive( Clone ) ]
89
90
enum BlindedPaymentTlvsRef < ' a > {
90
91
Forward ( & ' a ForwardTlvs ) ,
91
92
Receive ( & ' a ReceiveTlvs ) ,
@@ -288,16 +289,15 @@ pub(super) fn blinded_hops<T: secp256k1::Signing + secp256k1::Verification>(
288
289
) -> Result < Vec < BlindedHop > , secp256k1:: Error > {
289
290
let pks = intermediate_nodes. iter ( ) . map ( |node| & node. node_id )
290
291
. chain ( core:: iter:: once ( & payee_node_id) ) ;
291
- let tlvs: Vec < BlindedPaymentTlvsRef > = intermediate_nodes. iter ( ) . map ( |node| BlindedPaymentTlvsRef :: Forward ( & node. tlvs ) )
292
- . chain ( core:: iter:: once ( BlindedPaymentTlvsRef :: Receive ( & payee_tlvs) ) )
293
- . collect ( ) ;
292
+ let tlvs = intermediate_nodes. iter ( ) . map ( |node| BlindedPaymentTlvsRef :: Forward ( & node. tlvs ) )
293
+ . chain ( core:: iter:: once ( BlindedPaymentTlvsRef :: Receive ( & payee_tlvs) ) ) ;
294
294
295
- let max_length = tlvs. iter ( )
295
+ let max_length = tlvs. clone ( )
296
296
. max_by_key ( |c| c. serialized_length ( ) )
297
297
. map ( |c| c. serialized_length ( ) )
298
298
. unwrap_or ( 0 ) ;
299
299
300
- let length_tlvs = tlvs. into_iter ( ) . map ( move |tlv| ( max_length, tlv) ) ;
300
+ let length_tlvs = tlvs. map ( |tlv| ( max_length, tlv) ) ;
301
301
302
302
utils:: construct_blinded_hops ( secp_ctx, pks, length_tlvs, session_priv)
303
303
}
0 commit comments