@@ -27,15 +27,15 @@ use crate::util::chacha20::ChaCha20;
2727
2828use crate :: io;
2929use crate :: prelude:: * ;
30- use crate :: sync:: { Mutex , MutexGuard } ;
30+ use crate :: sync:: { Mutex } ;
3131use alloc:: collections:: BinaryHeap ;
3232use core:: { cmp, fmt} ;
33- use core:: ops:: Deref ;
33+ use core:: ops:: { Deref , DerefMut } ;
3434
3535/// A [`Router`] implemented using [`find_route`].
3636pub struct DefaultRouter < G : Deref < Target = NetworkGraph < L > > , L : Deref , S : Deref , SP : Sized , Sc : Score < ScoreParams = SP > > where
3737 L :: Target : Logger ,
38- S :: Target : for < ' a > LockableScore < ' a , Locked = MutexGuard < ' a , Sc > > ,
38+ S :: Target : for < ' a > LockableScore < ' a , Score = Sc > ,
3939{
4040 network_graph : G ,
4141 logger : L ,
@@ -46,7 +46,7 @@ pub struct DefaultRouter<G: Deref<Target = NetworkGraph<L>>, L: Deref, S: Deref,
4646
4747impl < G : Deref < Target = NetworkGraph < L > > , L : Deref , S : Deref , SP : Sized , Sc : Score < ScoreParams = SP > > DefaultRouter < G , L , S , SP , Sc > where
4848 L :: Target : Logger ,
49- S :: Target : for < ' a > LockableScore < ' a , Locked = MutexGuard < ' a , Sc > > ,
49+ S :: Target : for < ' a > LockableScore < ' a , Score = Sc > ,
5050{
5151 /// Creates a new router.
5252 pub fn new ( network_graph : G , logger : L , random_seed_bytes : [ u8 ; 32 ] , scorer : S , score_params : SP ) -> Self {
@@ -55,9 +55,9 @@ impl<G: Deref<Target = NetworkGraph<L>>, L: Deref, S: Deref, SP: Sized, Sc: Scor
5555 }
5656}
5757
58- impl < G : Deref < Target = NetworkGraph < L > > , L : Deref , S : Deref , SP : Sized , Sc : Score < ScoreParams = SP > > Router for DefaultRouter < G , L , S , SP , Sc > where
58+ impl < G : Deref < Target = NetworkGraph < L > > , L : Deref , S : Deref , SP : Sized , Sc : Score < ScoreParams = SP > > Router for DefaultRouter < G , L , S , SP , Sc > where
5959 L :: Target : Logger ,
60- S :: Target : for < ' a > LockableScore < ' a , Locked = MutexGuard < ' a , Sc > > ,
60+ S :: Target : for < ' a > LockableScore < ' a , Score = Sc > ,
6161{
6262 fn find_route (
6363 & self ,
@@ -73,7 +73,7 @@ impl< G: Deref<Target = NetworkGraph<L>>, L: Deref, S: Deref, SP: Sized, Sc: Sc
7373 } ;
7474 find_route (
7575 payer, params, & self . network_graph , first_hops, & * self . logger ,
76- & ScorerAccountingForInFlightHtlcs :: new ( self . scorer . lock ( ) , inflight_htlcs) ,
76+ & ScorerAccountingForInFlightHtlcs :: new ( self . scorer . lock ( ) . deref_mut ( ) , inflight_htlcs) ,
7777 & self . score_params ,
7878 & random_seed_bytes
7979 )
@@ -104,15 +104,15 @@ pub trait Router {
104104/// [`find_route`].
105105///
106106/// [`Score`]: crate::routing::scoring::Score
107- pub struct ScorerAccountingForInFlightHtlcs < ' a , S : Score > {
108- scorer : S ,
107+ pub struct ScorerAccountingForInFlightHtlcs < ' a , S : Score < ScoreParams = SP > , SP : Sized > {
108+ scorer : & ' a mut S ,
109109 // Maps a channel's short channel id and its direction to the liquidity used up.
110110 inflight_htlcs : & ' a InFlightHtlcs ,
111111}
112112
113- impl < ' a , S : Score > ScorerAccountingForInFlightHtlcs < ' a , S > {
113+ impl < ' a , S : Score < ScoreParams = SP > , SP : Sized > ScorerAccountingForInFlightHtlcs < ' a , S , SP > {
114114 /// Initialize a new `ScorerAccountingForInFlightHtlcs`.
115- pub fn new ( scorer : S , inflight_htlcs : & ' a InFlightHtlcs ) -> Self {
115+ pub fn new ( scorer : & ' a mut S , inflight_htlcs : & ' a InFlightHtlcs ) -> Self {
116116 ScorerAccountingForInFlightHtlcs {
117117 scorer,
118118 inflight_htlcs
@@ -125,7 +125,7 @@ impl<'a, S: Score> Writeable for ScorerAccountingForInFlightHtlcs<'a, S> {
125125 fn write < W : Writer > ( & self , writer : & mut W ) -> Result < ( ) , io:: Error > { self . scorer . write ( writer) }
126126}
127127
128- impl < ' a , S : Score > Score for ScorerAccountingForInFlightHtlcs < ' a , S > {
128+ impl < ' a , S : Score < ScoreParams = SP > , SP : Sized > Score for ScorerAccountingForInFlightHtlcs < ' a , S , SP > {
129129 type ScoreParams = S :: ScoreParams ;
130130 fn channel_penalty_msat ( & self , short_channel_id : u64 , source : & NodeId , target : & NodeId , usage : ChannelUsage , score_params : & Self :: ScoreParams ) -> u64 {
131131 if let Some ( used_liquidity) = self . inflight_htlcs . used_liquidity_msat (
0 commit comments