@@ -17,7 +17,6 @@ use crate::chain::chaininterface::BroadcasterInterface;
17
17
use crate :: chain:: ClaimId ;
18
18
use crate :: prelude:: * ;
19
19
use crate :: sign:: SignerProvider ;
20
- use crate :: sync:: Arc ;
21
20
use crate :: util:: async_poll:: { dummy_waker, AsyncResult , MaybeSend , MaybeSync } ;
22
21
use crate :: util:: logger:: Logger ;
23
22
@@ -43,6 +42,18 @@ pub(crate) struct WalletSourceSyncWrapper<T: Deref>(T)
43
42
where
44
43
T :: Target : WalletSourceSync ;
45
44
45
+ // Implement `Deref` directly on WalletSourceSyncWrapper so that it can be used directly
46
+ // below, rather than via a wrapper.
47
+ impl < T : Deref > Deref for WalletSourceSyncWrapper < T >
48
+ where
49
+ T :: Target : WalletSourceSync ,
50
+ {
51
+ type Target = Self ;
52
+ fn deref ( & self ) -> & Self {
53
+ self
54
+ }
55
+ }
56
+
46
57
impl < T : Deref > WalletSource for WalletSourceSyncWrapper < T >
47
58
where
48
59
T :: Target : WalletSourceSync ,
69
80
W :: Target : WalletSourceSync + MaybeSend ,
70
81
L :: Target : Logger + MaybeSend ,
71
82
{
72
- wallet : Wallet < Arc < WalletSourceSyncWrapper < W > > , L > ,
83
+ wallet : Wallet < WalletSourceSyncWrapper < W > , L > ,
73
84
}
74
85
75
86
impl < W : Deref + MaybeSync + MaybeSend , L : Deref + MaybeSync + MaybeSend > WalletSync < W , L >
79
90
{
80
91
/// Constructs a new [`WalletSync`] instance.
81
92
pub fn new ( source : W , logger : L ) -> Self {
82
- Self { wallet : Wallet :: new ( Arc :: new ( WalletSourceSyncWrapper ( source) ) , logger) }
93
+ Self { wallet : Wallet :: new ( WalletSourceSyncWrapper ( source) , logger) }
83
94
}
84
95
}
85
96
@@ -140,6 +151,18 @@ struct CoinSelectionSourceSyncWrapper<T: Deref>(T)
140
151
where
141
152
T :: Target : CoinSelectionSourceSync ;
142
153
154
+ // Implement `Deref` directly on CoinSelectionSourceSyncWrapper so that it can be used directly
155
+ // below, rather than via a wrapper.
156
+ impl < T : Deref > Deref for CoinSelectionSourceSyncWrapper < T >
157
+ where
158
+ T :: Target : CoinSelectionSourceSync ,
159
+ {
160
+ type Target = Self ;
161
+ fn deref ( & self ) -> & Self {
162
+ self
163
+ }
164
+ }
165
+
143
166
impl < T : Deref > CoinSelectionSource for CoinSelectionSourceSyncWrapper < T >
144
167
where
145
168
T :: Target : CoinSelectionSourceSync ,
@@ -172,7 +195,7 @@ where
172
195
L :: Target : Logger ,
173
196
{
174
197
bump_transaction_event_handler :
175
- Arc < BumpTransactionEventHandler < B , Arc < CoinSelectionSourceSyncWrapper < C > > , SP , L > > ,
198
+ BumpTransactionEventHandler < B , CoinSelectionSourceSyncWrapper < C > , SP , L > ,
176
199
}
177
200
178
201
impl < B : Deref , C : Deref , SP : Deref , L : Deref > BumpTransactionEventHandlerSync < B , C , SP , L >
@@ -184,12 +207,12 @@ where
184
207
{
185
208
/// Constructs a new instance of [`BumpTransactionEventHandlerSync`].
186
209
pub fn new ( broadcaster : B , utxo_source : C , signer_provider : SP , logger : L ) -> Self {
187
- let bump_transaction_event_handler = Arc :: new ( BumpTransactionEventHandler :: new (
210
+ let bump_transaction_event_handler = BumpTransactionEventHandler :: new (
188
211
broadcaster,
189
- Arc :: new ( CoinSelectionSourceSyncWrapper ( utxo_source) ) ,
212
+ CoinSelectionSourceSyncWrapper ( utxo_source) ,
190
213
signer_provider,
191
214
logger,
192
- ) ) ;
215
+ ) ;
193
216
Self { bump_transaction_event_handler }
194
217
}
195
218
0 commit comments