Skip to content

Commit 7596c98

Browse files
Drop Deref indirection for chain::Filter
Reduces generics and verbosity across the codebase, should provide equivalent behavior. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 934533c commit 7596c98

8 files changed

Lines changed: 57 additions & 99 deletions

File tree

lightning-background-processor/src/lib.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,6 @@ pub const NO_LIQUIDITY_MANAGER: Option<
467467
NodeSigner = &(dyn lightning::sign::NodeSigner + Send + Sync),
468468
AChannelManager = DynChannelManager,
469469
CM = &DynChannelManager,
470-
Filter = dyn chain::Filter + Send + Sync,
471470
C = &(dyn chain::Filter + Send + Sync),
472471
K = &DummyKVStore,
473472
TimeProvider = dyn lightning_liquidity::utils::time::TimeProvider + Send + Sync,
@@ -490,7 +489,6 @@ pub const NO_LIQUIDITY_MANAGER_SYNC: Option<
490489
NodeSigner = &(dyn lightning::sign::NodeSigner + Send + Sync),
491490
AChannelManager = DynChannelManager,
492491
CM = &DynChannelManager,
493-
Filter = dyn chain::Filter + Send + Sync,
494492
C = &(dyn chain::Filter + Send + Sync),
495493
KVStoreSync = dyn lightning::util::persist::KVStoreSync + Send + Sync,
496494
KS = &(dyn lightning::util::persist::KVStoreSync + Send + Sync),
@@ -931,7 +929,7 @@ use futures_util::{dummy_waker, Joiner, OptionalSelector, Selector, SelectorOutp
931929
pub async fn process_events_async<
932930
'a,
933931
UL: Deref,
934-
CF: Deref,
932+
CF: chain::Filter,
935933
T: BroadcasterInterface,
936934
F: FeeEstimator,
937935
G: Deref<Target = NetworkGraph<L>>,
@@ -964,7 +962,6 @@ pub async fn process_events_async<
964962
) -> Result<(), lightning::io::Error>
965963
where
966964
UL::Target: UtxoLookup,
967-
CF::Target: chain::Filter,
968965
P::Target: Persist<<CM::Target as AChannelManager>::Signer>,
969966
CM::Target: AChannelManager,
970967
OM::Target: AOnionMessenger,
@@ -1427,7 +1424,7 @@ fn check_and_reset_sleeper<
14271424
/// synchronous background persistence.
14281425
pub async fn process_events_async_with_kv_store_sync<
14291426
UL: Deref,
1430-
CF: Deref,
1427+
CF: chain::Filter,
14311428
T: BroadcasterInterface,
14321429
F: FeeEstimator,
14331430
G: Deref<Target = NetworkGraph<L>>,
@@ -1460,7 +1457,6 @@ pub async fn process_events_async_with_kv_store_sync<
14601457
) -> Result<(), lightning::io::Error>
14611458
where
14621459
UL::Target: UtxoLookup,
1463-
CF::Target: chain::Filter,
14641460
P::Target: Persist<<CM::Target as AChannelManager>::Signer>,
14651461
CM::Target: AChannelManager,
14661462
OM::Target: AOnionMessenger,
@@ -1537,7 +1533,7 @@ impl BackgroundProcessor {
15371533
pub fn start<
15381534
'a,
15391535
UL: 'static + Deref,
1540-
CF: 'static + Deref,
1536+
CF: 'static + chain::Filter,
15411537
T: 'static + BroadcasterInterface,
15421538
F: 'static + FeeEstimator + Send,
15431539
G: 'static + Deref<Target = NetworkGraph<L>>,
@@ -1570,7 +1566,6 @@ impl BackgroundProcessor {
15701566
) -> Self
15711567
where
15721568
UL::Target: 'static + UtxoLookup,
1573-
CF::Target: 'static + chain::Filter,
15741569
L::Target: 'static + Logger,
15751570
P::Target: 'static + Persist<<CM::Target as AChannelManager>::Signer>,
15761571
ES::Target: 'static + EntropySource,

lightning-liquidity/src/lsps1/service.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,9 @@ impl PeerState {
132132
}
133133

134134
/// The main object allowing to send and receive bLIP-51 / LSPS1 messages.
135-
pub struct LSPS1ServiceHandler<ES: EntropySource, CM: Deref + Clone, C: Deref, K: KVStore + Clone>
135+
pub struct LSPS1ServiceHandler<ES: EntropySource, CM: Deref + Clone, C: Filter, K: KVStore + Clone>
136136
where
137137
CM::Target: AChannelManager,
138-
C::Target: Filter,
139138
{
140139
entropy_source: ES,
141140
channel_manager: CM,
@@ -146,11 +145,10 @@ where
146145
config: LSPS1ServiceConfig,
147146
}
148147

149-
impl<ES: EntropySource, CM: Deref + Clone, C: Deref, K: KVStore + Clone>
148+
impl<ES: EntropySource, CM: Deref + Clone, C: Filter, K: KVStore + Clone>
150149
LSPS1ServiceHandler<ES, CM, C, K>
151150
where
152151
CM::Target: AChannelManager,
153-
C::Target: Filter,
154152
{
155153
/// Constructs a `LSPS1ServiceHandler`.
156154
pub(crate) fn new(
@@ -417,11 +415,10 @@ where
417415
}
418416
}
419417

420-
impl<ES: EntropySource, CM: Deref + Clone, C: Deref, K: KVStore + Clone> LSPSProtocolMessageHandler
418+
impl<ES: EntropySource, CM: Deref + Clone, C: Filter, K: KVStore + Clone> LSPSProtocolMessageHandler
421419
for LSPS1ServiceHandler<ES, CM, C, K>
422420
where
423421
CM::Target: AChannelManager,
424-
C::Target: Filter,
425422
{
426423
type ProtocolMessage = LSPS1Message;
427424
const PROTOCOL_NUMBER: Option<u16> = Some(1);

lightning-liquidity/src/manager.rs

Lines changed: 18 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,7 @@ pub trait ALiquidityManager {
112112
/// A type that may be dereferenced to [`Self::AChannelManager`].
113113
type CM: Deref<Target = Self::AChannelManager> + Clone;
114114
/// A type implementing [`Filter`].
115-
type Filter: Filter + ?Sized;
116-
/// A type that may be dereferenced to [`Self::Filter`].
117-
type C: Deref<Target = Self::Filter> + Clone;
115+
type C: Filter + Clone;
118116
/// A type implementing [`KVStore`].
119117
type K: KVStore + Clone;
120118
/// A type implementing [`TimeProvider`].
@@ -141,21 +139,19 @@ impl<
141139
ES: EntropySource + Clone,
142140
NS: NodeSigner + Clone,
143141
CM: Deref + Clone,
144-
C: Deref + Clone,
142+
C: Filter + Clone,
145143
K: KVStore + Clone,
146144
TP: Deref + Clone,
147145
T: BroadcasterInterface + Clone,
148146
> ALiquidityManager for LiquidityManager<ES, NS, CM, C, K, TP, T>
149147
where
150148
CM::Target: AChannelManager,
151-
C::Target: Filter,
152149
TP::Target: TimeProvider,
153150
{
154151
type EntropySource = ES;
155152
type NodeSigner = NS;
156153
type AChannelManager = CM::Target;
157154
type CM = CM;
158-
type Filter = C::Target;
159155
type C = C;
160156
type K = K;
161157
type TimeProvider = TP::Target;
@@ -180,9 +176,7 @@ pub trait ALiquidityManagerSync {
180176
/// A type that may be dereferenced to [`Self::AChannelManager`].
181177
type CM: Deref<Target = Self::AChannelManager> + Clone;
182178
/// A type implementing [`Filter`].
183-
type Filter: Filter + ?Sized;
184-
/// A type that may be dereferenced to [`Self::Filter`].
185-
type C: Deref<Target = Self::Filter> + Clone;
179+
type C: Filter + Clone;
186180
/// A type implementing [`KVStoreSync`].
187181
type KVStoreSync: KVStoreSync + ?Sized;
188182
/// A type that may be dereferenced to [`Self::KVStoreSync`].
@@ -224,22 +218,20 @@ impl<
224218
ES: EntropySource + Clone,
225219
NS: NodeSigner + Clone,
226220
CM: Deref + Clone,
227-
C: Deref + Clone,
221+
C: Filter + Clone,
228222
KS: Deref + Clone,
229223
TP: Deref + Clone,
230224
T: BroadcasterInterface + Clone,
231225
> ALiquidityManagerSync for LiquidityManagerSync<ES, NS, CM, C, KS, TP, T>
232226
where
233227
CM::Target: AChannelManager,
234-
C::Target: Filter,
235228
KS::Target: KVStoreSync,
236229
TP::Target: TimeProvider,
237230
{
238231
type EntropySource = ES;
239232
type NodeSigner = NS;
240233
type AChannelManager = CM::Target;
241234
type CM = CM;
242-
type Filter = C::Target;
243235
type C = C;
244236
type KVStoreSync = KS::Target;
245237
type KS = KS;
@@ -289,13 +281,12 @@ pub struct LiquidityManager<
289281
ES: EntropySource + Clone,
290282
NS: NodeSigner + Clone,
291283
CM: Deref + Clone,
292-
C: Deref + Clone,
284+
C: Filter + Clone,
293285
K: KVStore + Clone,
294286
TP: Deref + Clone,
295287
T: BroadcasterInterface + Clone,
296288
> where
297289
CM::Target: AChannelManager,
298-
C::Target: Filter,
299290
TP::Target: TimeProvider,
300291
{
301292
pending_messages: Arc<MessageQueue>,
@@ -324,13 +315,12 @@ impl<
324315
ES: EntropySource + Clone,
325316
NS: NodeSigner + Clone,
326317
CM: Deref + Clone,
327-
C: Deref + Clone,
318+
C: Filter + Clone,
328319
K: KVStore + Clone,
329320
T: BroadcasterInterface + Clone,
330321
> LiquidityManager<ES, NS, CM, C, K, DefaultTimeProvider, T>
331322
where
332323
CM::Target: AChannelManager,
333-
C::Target: Filter,
334324
{
335325
/// Constructor for the [`LiquidityManager`] using the default system clock
336326
///
@@ -361,14 +351,13 @@ impl<
361351
ES: EntropySource + Clone,
362352
NS: NodeSigner + Clone,
363353
CM: Deref + Clone,
364-
C: Deref + Clone,
354+
C: Filter + Clone,
365355
K: KVStore + Clone,
366356
TP: Deref + Clone,
367357
T: BroadcasterInterface + Clone,
368358
> LiquidityManager<ES, NS, CM, C, K, TP, T>
369359
where
370360
CM::Target: AChannelManager,
371-
C::Target: Filter,
372361
TP::Target: TimeProvider,
373362
{
374363
/// Constructor for the [`LiquidityManager`] with a custom time provider.
@@ -784,14 +773,13 @@ impl<
784773
ES: EntropySource + Clone,
785774
NS: NodeSigner + Clone,
786775
CM: Deref + Clone,
787-
C: Deref + Clone,
776+
C: Filter + Clone,
788777
K: KVStore + Clone,
789778
TP: Deref + Clone,
790779
T: BroadcasterInterface + Clone,
791780
> CustomMessageReader for LiquidityManager<ES, NS, CM, C, K, TP, T>
792781
where
793782
CM::Target: AChannelManager,
794-
C::Target: Filter,
795783
TP::Target: TimeProvider,
796784
{
797785
type CustomMessage = RawLSPSMessage;
@@ -812,14 +800,13 @@ impl<
812800
ES: EntropySource + Clone,
813801
NS: NodeSigner + Clone,
814802
CM: Deref + Clone,
815-
C: Deref + Clone,
803+
C: Filter + Clone,
816804
K: KVStore + Clone,
817805
TP: Deref + Clone,
818806
T: BroadcasterInterface + Clone,
819807
> CustomMessageHandler for LiquidityManager<ES, NS, CM, C, K, TP, T>
820808
where
821809
CM::Target: AChannelManager,
822-
C::Target: Filter,
823810
TP::Target: TimeProvider,
824811
{
825812
fn handle_custom_message(
@@ -942,14 +929,13 @@ impl<
942929
ES: EntropySource + Clone,
943930
NS: NodeSigner + Clone,
944931
CM: Deref + Clone,
945-
C: Deref + Clone,
932+
C: Filter + Clone,
946933
K: KVStore + Clone,
947934
TP: Deref + Clone,
948935
T: BroadcasterInterface + Clone,
949936
> Listen for LiquidityManager<ES, NS, CM, C, K, TP, T>
950937
where
951938
CM::Target: AChannelManager,
952-
C::Target: Filter,
953939
TP::Target: TimeProvider,
954940
{
955941
fn filtered_block_connected(
@@ -984,14 +970,13 @@ impl<
984970
ES: EntropySource + Clone,
985971
NS: NodeSigner + Clone,
986972
CM: Deref + Clone,
987-
C: Deref + Clone,
973+
C: Filter + Clone,
988974
K: KVStore + Clone,
989975
TP: Deref + Clone,
990976
T: BroadcasterInterface + Clone,
991977
> Confirm for LiquidityManager<ES, NS, CM, C, K, TP, T>
992978
where
993979
CM::Target: AChannelManager,
994-
C::Target: Filter,
995980
TP::Target: TimeProvider,
996981
{
997982
fn transactions_confirmed(
@@ -1026,13 +1011,12 @@ pub struct LiquidityManagerSync<
10261011
ES: EntropySource + Clone,
10271012
NS: NodeSigner + Clone,
10281013
CM: Deref + Clone,
1029-
C: Deref + Clone,
1014+
C: Filter + Clone,
10301015
KS: Deref + Clone,
10311016
TP: Deref + Clone,
10321017
T: BroadcasterInterface + Clone,
10331018
> where
10341019
CM::Target: AChannelManager,
1035-
C::Target: Filter,
10361020
KS::Target: KVStoreSync,
10371021
TP::Target: TimeProvider,
10381022
{
@@ -1044,14 +1028,13 @@ impl<
10441028
ES: EntropySource + Clone,
10451029
NS: NodeSigner + Clone,
10461030
CM: Deref + Clone,
1047-
C: Deref + Clone,
1031+
C: Filter + Clone,
10481032
KS: Deref + Clone,
10491033
T: BroadcasterInterface + Clone,
10501034
> LiquidityManagerSync<ES, NS, CM, C, KS, DefaultTimeProvider, T>
10511035
where
10521036
CM::Target: AChannelManager,
10531037
KS::Target: KVStoreSync,
1054-
C::Target: Filter,
10551038
{
10561039
/// Constructor for the [`LiquidityManagerSync`] using the default system clock
10571040
///
@@ -1093,14 +1076,13 @@ impl<
10931076
ES: EntropySource + Clone,
10941077
NS: NodeSigner + Clone,
10951078
CM: Deref + Clone,
1096-
C: Deref + Clone,
1079+
C: Filter + Clone,
10971080
KS: Deref + Clone,
10981081
TP: Deref + Clone,
10991082
T: BroadcasterInterface + Clone,
11001083
> LiquidityManagerSync<ES, NS, CM, C, KS, TP, T>
11011084
where
11021085
CM::Target: AChannelManager,
1103-
C::Target: Filter,
11041086
KS::Target: KVStoreSync,
11051087
TP::Target: TimeProvider,
11061088
{
@@ -1260,14 +1242,13 @@ impl<
12601242
ES: EntropySource + Clone,
12611243
NS: NodeSigner + Clone,
12621244
CM: Deref + Clone,
1263-
C: Deref + Clone,
1245+
C: Filter + Clone,
12641246
KS: Deref + Clone,
12651247
TP: Deref + Clone,
12661248
T: BroadcasterInterface + Clone,
12671249
> CustomMessageReader for LiquidityManagerSync<ES, NS, CM, C, KS, TP, T>
12681250
where
12691251
CM::Target: AChannelManager,
1270-
C::Target: Filter,
12711252
KS::Target: KVStoreSync,
12721253
TP::Target: TimeProvider,
12731254
{
@@ -1284,14 +1265,13 @@ impl<
12841265
ES: EntropySource + Clone,
12851266
NS: NodeSigner + Clone,
12861267
CM: Deref + Clone,
1287-
C: Deref + Clone,
1268+
C: Filter + Clone,
12881269
KS: Deref + Clone,
12891270
TP: Deref + Clone,
12901271
T: BroadcasterInterface + Clone,
12911272
> CustomMessageHandler for LiquidityManagerSync<ES, NS, CM, C, KS, TP, T>
12921273
where
12931274
CM::Target: AChannelManager,
1294-
C::Target: Filter,
12951275
KS::Target: KVStoreSync,
12961276
TP::Target: TimeProvider,
12971277
{
@@ -1328,14 +1308,13 @@ impl<
13281308
ES: EntropySource + Clone,
13291309
NS: NodeSigner + Clone,
13301310
CM: Deref + Clone,
1331-
C: Deref + Clone,
1311+
C: Filter + Clone,
13321312
KS: Deref + Clone,
13331313
TP: Deref + Clone,
13341314
T: BroadcasterInterface + Clone,
13351315
> Listen for LiquidityManagerSync<ES, NS, CM, C, KS, TP, T>
13361316
where
13371317
CM::Target: AChannelManager,
1338-
C::Target: Filter,
13391318
KS::Target: KVStoreSync,
13401319
TP::Target: TimeProvider,
13411320
{
@@ -1355,14 +1334,13 @@ impl<
13551334
ES: EntropySource + Clone,
13561335
NS: NodeSigner + Clone,
13571336
CM: Deref + Clone,
1358-
C: Deref + Clone,
1337+
C: Filter + Clone,
13591338
KS: Deref + Clone,
13601339
TP: Deref + Clone,
13611340
T: BroadcasterInterface + Clone,
13621341
> Confirm for LiquidityManagerSync<ES, NS, CM, C, KS, TP, T>
13631342
where
13641343
CM::Target: AChannelManager,
1365-
C::Target: Filter,
13661344
KS::Target: KVStoreSync,
13671345
TP::Target: TimeProvider,
13681346
{

0 commit comments

Comments
 (0)