@@ -270,36 +270,36 @@ where
270
270
// the hints across our real nodes we add one hint from each in turn until no node has any hints
271
271
// left (if one node has more hints than any other, these will accumulate at the end of the
272
272
// vector).
273
- rotate_nested_vectors ( phantom_hints)
273
+ rotate_nested_vectors ( phantom_hints)
274
274
275
275
}
276
276
277
277
// Draw items iteratively from multiple nested vectors. The items are retrieved by index and
278
278
// rotates through the vectors - first the zero index then the first index then second index, etc.
279
279
fn rotate_nested_vectors < T : Clone > ( vecs : Vec < Vec < T > > ) -> impl Iterator < Item = T > {
280
- let max_vector_length: usize = vecs. iter ( ) . map ( |x| x. len ( ) ) . max ( ) . unwrap ( ) ;
281
- let mut hint_index = 0 ;
282
- let mut vector_index = 0 ;
283
- let number_inner_vectors: usize = vecs. len ( ) ;
284
-
285
- core:: iter:: from_fn ( move || loop {
286
- if hint_index == max_vector_length {
287
- return None ;
288
- } ;
289
- let hint_value = if vecs[ vector_index] . len ( ) != 0 && vecs[ vector_index] . len ( ) > hint_index {
290
- Some ( vecs[ vector_index] [ hint_index] . clone ( ) )
291
- } else {
292
- None // no value retrieved - continue looping
293
- } ;
294
- vector_index += 1 ;
295
- if hint_index < max_vector_length && vector_index == number_inner_vectors {
296
- vector_index = 0 ;
297
- hint_index += 1 ;
298
- } ;
299
- if !hint_value. is_none ( ) {
300
- return hint_value;
301
- } ;
302
- } )
280
+ let max_vector_length: usize = vecs. iter ( ) . map ( |x| x. len ( ) ) . max ( ) . unwrap ( ) ;
281
+ let mut hint_index = 0 ;
282
+ let mut vector_index = 0 ;
283
+ let number_inner_vectors: usize = vecs. len ( ) ;
284
+
285
+ core:: iter:: from_fn ( move || loop {
286
+ if hint_index == max_vector_length {
287
+ return None ;
288
+ } ;
289
+ let hint_value = if vecs[ vector_index] . len ( ) != 0 && vecs[ vector_index] . len ( ) > hint_index {
290
+ Some ( vecs[ vector_index] [ hint_index] . clone ( ) )
291
+ } else {
292
+ None // no value retrieved - continue looping
293
+ } ;
294
+ vector_index += 1 ;
295
+ if hint_index < max_vector_length && vector_index == number_inner_vectors {
296
+ vector_index = 0 ;
297
+ hint_index += 1 ;
298
+ } ;
299
+ if !hint_value. is_none ( ) {
300
+ return hint_value;
301
+ } ;
302
+ } )
303
303
}
304
304
305
305
#[ cfg( feature = "std" ) ]
@@ -585,12 +585,12 @@ fn _create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_has
585
585
/// * Sorted by lowest inbound capacity if an online channel with the minimum amount requested exists,
586
586
/// otherwise sort by highest inbound capacity to give the payment the best chance of succeeding.
587
587
fn sort_and_filter_channels < L : Deref > (
588
- channels : Vec < ChannelDetails > ,
589
- min_inbound_capacity_msat : Option < u64 > ,
590
- logger : & L ,
588
+ channels : Vec < ChannelDetails > ,
589
+ min_inbound_capacity_msat : Option < u64 > ,
590
+ logger : & L ,
591
591
) -> impl Iterator < Item = RouteHint >
592
592
where
593
- L :: Target : Logger ,
593
+ L :: Target : Logger ,
594
594
{
595
595
let mut filtered_channels: HashMap < PublicKey , ChannelDetails > = HashMap :: new ( ) ;
596
596
let min_inbound_capacity = min_inbound_capacity_msat. unwrap_or ( 0 ) ;
@@ -617,7 +617,7 @@ where
617
617
// look at the public channels instead.
618
618
log_trace ! ( logger, "Not including channels in invoice route hints on account of public channel {}" ,
619
619
log_bytes!( channel. channel_id) ) ;
620
- return vec ! [ ] . into_iter ( ) . take ( 3 ) . map ( route_hint_from_channel) ;
620
+ return vec ! [ ] . into_iter ( ) . take ( 3 ) . map ( route_hint_from_channel) ;
621
621
}
622
622
}
623
623
@@ -689,8 +689,7 @@ where
689
689
cltv_expiry_delta: forwarding_info. cltv_expiry_delta,
690
690
htlc_minimum_msat: channel. inbound_htlc_minimum_msat,
691
691
htlc_maximum_msat: channel. inbound_htlc_maximum_msat, } ] )
692
-
693
- }
692
+ } ;
694
693
// If all channels are private, prefer to return route hints which have a higher capacity than
695
694
// the payment value and where we're currently connected to the channel counterparty.
696
695
// Even if we cannot satisfy both goals, always ensure we include *some* hints, preferring
@@ -1905,110 +1904,110 @@ mod test {
1905
1904
}
1906
1905
1907
1906
1908
- #[ test]
1909
- fn test_zip_nested_vectors ( ) {
1907
+ #[ test]
1908
+ fn test_zip_nested_vectors ( ) {
1910
1909
// two nested vectors
1911
- let a = vec ! [ vec![ "a0" , "b0" , "c0" ] , vec![ "a1" , "b1" ] ] ;
1912
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1910
+ let a = vec ! [ vec![ "a0" , "b0" , "c0" ] , vec![ "a1" , "b1" ] ] ;
1911
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1913
1912
1914
- let expected = vec ! [ "a0" , "a1" , "b0" , "b1" , "c0" ] ;
1915
- assert_eq ! ( expected, result) ;
1913
+ let expected = vec ! [ "a0" , "a1" , "b0" , "b1" , "c0" ] ;
1914
+ assert_eq ! ( expected, result) ;
1916
1915
1917
- // test single nested vector
1918
- let a = vec ! [ vec![ "a0" , "b0" , "c0" ] ] ;
1919
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1916
+ // test single nested vector
1917
+ let a = vec ! [ vec![ "a0" , "b0" , "c0" ] ] ;
1918
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1920
1919
1921
- let expected = vec ! [ "a0" , "b0" , "c0" ] ;
1922
- assert_eq ! ( expected, result) ;
1920
+ let expected = vec ! [ "a0" , "b0" , "c0" ] ;
1921
+ assert_eq ! ( expected, result) ;
1923
1922
1924
- // test second vector with only one element
1925
- let a = vec ! [ vec![ "a0" , "b0" , "c0" ] , vec![ "a1" ] ] ;
1926
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1923
+ // test second vector with only one element
1924
+ let a = vec ! [ vec![ "a0" , "b0" , "c0" ] , vec![ "a1" ] ] ;
1925
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1927
1926
1928
- let expected = vec ! [ "a0" , "a1" , "b0" , "c0" ] ;
1929
- assert_eq ! ( expected, result) ;
1927
+ let expected = vec ! [ "a0" , "a1" , "b0" , "c0" ] ;
1928
+ assert_eq ! ( expected, result) ;
1930
1929
1931
- // test three nestend vectors
1932
- let a = vec ! [ vec![ "a0" ] , vec![ "a1" , "b1" , "c1" ] , vec![ "a2" ] ] ;
1933
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1930
+ // test three nestend vectors
1931
+ let a = vec ! [ vec![ "a0" ] , vec![ "a1" , "b1" , "c1" ] , vec![ "a2" ] ] ;
1932
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1934
1933
1935
- let expected = vec ! [ "a0" , "a1" , "a2" , "b1" , "c1" ] ;
1936
- assert_eq ! ( expected, result) ;
1934
+ let expected = vec ! [ "a0" , "a1" , "a2" , "b1" , "c1" ] ;
1935
+ assert_eq ! ( expected, result) ;
1937
1936
1938
- // test single nested vector with a single value
1939
- let a = vec ! [ vec![ "a0" ] ] ;
1940
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1937
+ // test single nested vector with a single value
1938
+ let a = vec ! [ vec![ "a0" ] ] ;
1939
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1941
1940
1942
- let expected = vec ! [ "a0" ] ;
1943
- assert_eq ! ( expected, result) ;
1941
+ let expected = vec ! [ "a0" ] ;
1942
+ assert_eq ! ( expected, result) ;
1944
1943
1945
- // test single empty nested vector
1946
- let a: Vec < Vec < & str > > = vec ! [ vec![ ] ] ;
1947
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1948
- let expected: Vec < & str > = vec ! [ ] ;
1944
+ // test single empty nested vector
1945
+ let a: Vec < Vec < & str > > = vec ! [ vec![ ] ] ;
1946
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1947
+ let expected: Vec < & str > = vec ! [ ] ;
1949
1948
1950
- assert_eq ! ( expected, result) ;
1949
+ assert_eq ! ( expected, result) ;
1951
1950
1952
- // test first nested vector is empty
1953
- let a = vec ! [ vec![ ] , vec![ "a1" , "b1" , "c1" ] ] ;
1954
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1951
+ // test first nested vector is empty
1952
+ let a = vec ! [ vec![ ] , vec![ "a1" , "b1" , "c1" ] ] ;
1953
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1955
1954
1956
- let expected = vec ! [ "a1" , "b1" , "c1" ] ;
1957
- assert_eq ! ( expected, result) ;
1955
+ let expected = vec ! [ "a1" , "b1" , "c1" ] ;
1956
+ assert_eq ! ( expected, result) ;
1958
1957
1959
- // test two empty vectors
1960
- let a: Vec < Vec < & str > > = vec ! [ vec![ ] , vec![ ] ] ;
1961
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1958
+ // test two empty vectors
1959
+ let a: Vec < Vec < & str > > = vec ! [ vec![ ] , vec![ ] ] ;
1960
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1962
1961
1963
- let expected: Vec < & str > = vec ! [ ] ;
1964
- assert_eq ! ( expected, result) ;
1962
+ let expected: Vec < & str > = vec ! [ ] ;
1963
+ assert_eq ! ( expected, result) ;
1965
1964
1966
- // test an empty vector amongst other filled vectors
1967
- let a = vec ! [
1968
- vec![ "a0" , "b0" , "c0" ] ,
1969
- vec![ ] ,
1970
- vec![ "a1" , "b1" , "c1" ] ,
1971
- vec![ "a2" , "b2" , "c2" ] ,
1972
- ] ;
1973
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1965
+ // test an empty vector amongst other filled vectors
1966
+ let a = vec ! [
1967
+ vec![ "a0" , "b0" , "c0" ] ,
1968
+ vec![ ] ,
1969
+ vec![ "a1" , "b1" , "c1" ] ,
1970
+ vec![ "a2" , "b2" , "c2" ] ,
1971
+ ] ;
1972
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1974
1973
1975
- let expected = vec ! [ "a0" , "a1" , "a2" , "b0" , "b1" , "b2" , "c0" , "c1" , "c2" ] ;
1976
- assert_eq ! ( expected, result) ;
1974
+ let expected = vec ! [ "a0" , "a1" , "a2" , "b0" , "b1" , "b2" , "c0" , "c1" , "c2" ] ;
1975
+ assert_eq ! ( expected, result) ;
1977
1976
1978
- // test a filled vector between two empty vectors
1979
- let a = vec ! [ vec![ ] , vec![ "a1" , "b1" , "c1" ] , vec![ ] ] ;
1980
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1977
+ // test a filled vector between two empty vectors
1978
+ let a = vec ! [ vec![ ] , vec![ "a1" , "b1" , "c1" ] , vec![ ] ] ;
1979
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1981
1980
1982
- let expected = vec ! [ "a1" , "b1" , "c1" ] ;
1983
- assert_eq ! ( expected, result) ;
1981
+ let expected = vec ! [ "a1" , "b1" , "c1" ] ;
1982
+ assert_eq ! ( expected, result) ;
1984
1983
1985
- // test an empty vector at the end of the vectors
1986
- let a = vec ! [ vec![ "a0" , "b0" , "c0" ] , vec![ ] ] ;
1987
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1984
+ // test an empty vector at the end of the vectors
1985
+ let a = vec ! [ vec![ "a0" , "b0" , "c0" ] , vec![ ] ] ;
1986
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
1988
1987
1989
- let expected = vec ! [ "a0" , "b0" , "c0" ] ;
1990
- assert_eq ! ( expected, result) ;
1988
+ let expected = vec ! [ "a0" , "b0" , "c0" ] ;
1989
+ assert_eq ! ( expected, result) ;
1991
1990
1992
- // test multiple empty vectors amongst multiple filled vectors
1993
- let a = vec ! [
1994
- vec![ ] ,
1995
- vec![ "a1" , "b1" , "c1" ] ,
1996
- vec![ ] ,
1997
- vec![ "a3" , "b3" ] ,
1998
- vec![ ] ,
1999
- ] ;
1991
+ // test multiple empty vectors amongst multiple filled vectors
1992
+ let a = vec ! [
1993
+ vec![ ] ,
1994
+ vec![ "a1" , "b1" , "c1" ] ,
1995
+ vec![ ] ,
1996
+ vec![ "a3" , "b3" ] ,
1997
+ vec![ ] ,
1998
+ ] ;
2000
1999
2001
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
2000
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
2002
2001
2003
- let expected = vec ! [ "a1" , "a3" , "b1" , "b3" , "c1" ] ;
2004
- assert_eq ! ( expected, result) ;
2002
+ let expected = vec ! [ "a1" , "a3" , "b1" , "b3" , "c1" ] ;
2003
+ assert_eq ! ( expected, result) ;
2005
2004
2006
- // test one element in the first nested vectore and two elements in the second nested
2007
- // vector
2008
- let a = vec ! [ vec![ "a0" ] , vec![ "a1" , "b1" ] ] ;
2009
- let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
2005
+ // test one element in the first nested vectore and two elements in the second nested
2006
+ // vector
2007
+ let a = vec ! [ vec![ "a0" ] , vec![ "a1" , "b1" ] ] ;
2008
+ let result = rotate_nested_vectors ( a) . collect :: < Vec < _ > > ( ) ;
2010
2009
2011
- let expected = vec ! [ "a0" , "a1" , "b1" ] ;
2012
- assert_eq ! ( expected, result) ;
2013
- }
2010
+ let expected = vec ! [ "a0" , "a1" , "b1" ] ;
2011
+ assert_eq ! ( expected, result) ;
2012
+ }
2014
2013
}
0 commit comments