59
59
//! # }
60
60
//! #
61
61
//! # struct FakeRouter {};
62
- //! # impl Router for FakeRouter {
63
- //! # fn find_route<S: routing::Score> (
62
+ //! # impl<S: routing::Score> Router<S> for FakeRouter {
63
+ //! # fn find_route(
64
64
//! # &self, payer: &PublicKey, params: &RouteParameters,
65
65
//! # first_hops: Option<&[&ChannelDetails]>, scorer: &S
66
66
//! # ) -> Result<Route, LightningError> { unimplemented!() }
@@ -134,7 +134,7 @@ use std::time::{Duration, SystemTime};
134
134
pub struct InvoicePayer < P : Deref , R , S : Deref , L : Deref , E >
135
135
where
136
136
P :: Target : Payer ,
137
- R : Router ,
137
+ R : for < ' a > Router < << S as Deref > :: Target as routing :: LockableScore < ' a > > :: Locked > ,
138
138
S :: Target : for < ' a > routing:: LockableScore < ' a > ,
139
139
L :: Target : Logger ,
140
140
E : EventHandler ,
@@ -166,9 +166,9 @@ pub trait Payer {
166
166
}
167
167
168
168
/// A trait defining behavior for routing an [`Invoice`] payment.
169
- pub trait Router {
169
+ pub trait Router < S : routing :: Score > {
170
170
/// Finds a [`Route`] between `payer` and `payee` for a payment with the given values.
171
- fn find_route < S : routing :: Score > (
171
+ fn find_route (
172
172
& self , payer : & PublicKey , params : & RouteParameters , first_hops : Option < & [ & ChannelDetails ] > ,
173
173
scorer : & S
174
174
) -> Result < Route , LightningError > ;
@@ -192,7 +192,7 @@ pub enum PaymentError {
192
192
impl < P : Deref , R , S : Deref , L : Deref , E > InvoicePayer < P , R , S , L , E >
193
193
where
194
194
P :: Target : Payer ,
195
- R : Router ,
195
+ R : for < ' a > Router < << S as Deref > :: Target as routing :: LockableScore < ' a > > :: Locked > ,
196
196
S :: Target : for < ' a > routing:: LockableScore < ' a > ,
197
197
L :: Target : Logger ,
198
198
E : EventHandler ,
@@ -308,7 +308,7 @@ fn has_expired(params: &RouteParameters) -> bool {
308
308
impl < P : Deref , R , S : Deref , L : Deref , E > EventHandler for InvoicePayer < P , R , S , L , E >
309
309
where
310
310
P :: Target : Payer ,
311
- R : Router ,
311
+ R : for < ' a > Router < << S as Deref > :: Target as routing :: LockableScore < ' a > > :: Locked > ,
312
312
S :: Target : for < ' a > routing:: LockableScore < ' a > ,
313
313
L :: Target : Logger ,
314
314
E : EventHandler ,
@@ -949,8 +949,8 @@ mod tests {
949
949
}
950
950
}
951
951
952
- impl Router for TestRouter {
953
- fn find_route < S : routing :: Score > (
952
+ impl < S : routing :: Score > Router < S > for TestRouter {
953
+ fn find_route (
954
954
& self ,
955
955
_payer : & PublicKey ,
956
956
params : & RouteParameters ,
@@ -965,8 +965,8 @@ mod tests {
965
965
966
966
struct FailingRouter ;
967
967
968
- impl Router for FailingRouter {
969
- fn find_route < S : routing :: Score > (
968
+ impl < S : routing :: Score > Router < S > for FailingRouter {
969
+ fn find_route (
970
970
& self ,
971
971
_payer : & PublicKey ,
972
972
_params : & RouteParameters ,
0 commit comments