@@ -17,7 +17,6 @@ use crate::chain::chaininterface::BroadcasterInterface;
1717use crate :: chain:: ClaimId ;
1818use crate :: prelude:: * ;
1919use crate :: sign:: SignerProvider ;
20- use crate :: sync:: Arc ;
2120use crate :: util:: async_poll:: { dummy_waker, AsyncResult , MaybeSend , MaybeSync } ;
2221use crate :: util:: logger:: Logger ;
2322
@@ -43,6 +42,18 @@ pub(crate) struct WalletSourceSyncWrapper<T: Deref>(T)
4342where
4443 T :: Target : WalletSourceSync ;
4544
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+
4657impl < T : Deref > WalletSource for WalletSourceSyncWrapper < T >
4758where
4859 T :: Target : WalletSourceSync ,
6980 W :: Target : WalletSourceSync + MaybeSend ,
7081 L :: Target : Logger + MaybeSend ,
7182{
72- wallet : Wallet < Arc < WalletSourceSyncWrapper < W > > , L > ,
83+ wallet : Wallet < WalletSourceSyncWrapper < W > , L > ,
7384}
7485
7586impl < W : Deref + MaybeSync + MaybeSend , L : Deref + MaybeSync + MaybeSend > WalletSync < W , L >
7990{
8091 /// Constructs a new [`WalletSync`] instance.
8192 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) }
8394 }
8495}
8596
@@ -140,6 +151,18 @@ struct CoinSelectionSourceSyncWrapper<T: Deref>(T)
140151where
141152 T :: Target : CoinSelectionSourceSync ;
142153
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+
143166impl < T : Deref > CoinSelectionSource for CoinSelectionSourceSyncWrapper < T >
144167where
145168 T :: Target : CoinSelectionSourceSync ,
@@ -172,7 +195,7 @@ where
172195 L :: Target : Logger ,
173196{
174197 bump_transaction_event_handler :
175- Arc < BumpTransactionEventHandler < B , Arc < CoinSelectionSourceSyncWrapper < C > > , SP , L > > ,
198+ BumpTransactionEventHandler < B , CoinSelectionSourceSyncWrapper < C > , SP , L > ,
176199}
177200
178201impl < B : Deref , C : Deref , SP : Deref , L : Deref > BumpTransactionEventHandlerSync < B , C , SP , L >
@@ -184,12 +207,12 @@ where
184207{
185208 /// Constructs a new instance of [`BumpTransactionEventHandlerSync`].
186209 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 (
188211 broadcaster,
189- Arc :: new ( CoinSelectionSourceSyncWrapper ( utxo_source) ) ,
212+ CoinSelectionSourceSyncWrapper ( utxo_source) ,
190213 signer_provider,
191214 logger,
192- ) ) ;
215+ ) ;
193216 Self { bump_transaction_event_handler }
194217 }
195218
0 commit comments