@@ -171,8 +171,7 @@ impl ConnectionPoolWorker {
171171 . map ( |pool_options| ConnectionOptions :: from ( pool_options. clone ( ) ) ) ;
172172
173173 let ( handle, handle_listener) = handle_channel ( ) ;
174- let ( connection_requester, request_receiver) =
175- connection_requester:: channel ( address. clone ( ) , handle) ;
174+ let ( connection_requester, request_receiver) = connection_requester:: channel ( handle) ;
176175 let ( manager, management_receiver) = manager:: channel ( ) ;
177176
178177 let is_load_balanced = options
@@ -292,31 +291,29 @@ impl ConnectionPoolWorker {
292291 ) ) ;
293292 }
294293 } ,
295- PoolTask :: HandleManagementRequest ( PoolManagementRequest :: CheckIn ( connection) ) => {
296- self . check_in ( connection) ;
297- }
298- PoolTask :: HandleManagementRequest ( PoolManagementRequest :: Clear {
299- completion_handler : _,
300- cause,
301- service_id,
302- } ) => {
303- self . clear ( cause, service_id) ;
304- }
305- PoolTask :: HandleManagementRequest ( PoolManagementRequest :: MarkAsReady {
306- completion_handler : _handler,
307- } ) => {
308- self . mark_as_ready ( ) ;
309- }
310- PoolTask :: HandleManagementRequest (
311- PoolManagementRequest :: HandleConnectionSucceeded ( conn) ,
312- ) => self . handle_connection_succeeded ( conn) ,
313- PoolTask :: HandleManagementRequest (
314- PoolManagementRequest :: HandleConnectionFailed ,
315- ) => self . handle_connection_failed ( ) ,
316- #[ cfg( test) ]
317- PoolTask :: HandleManagementRequest ( PoolManagementRequest :: Sync ( tx) ) => {
318- let _ = tx. send ( ( ) ) ;
319- }
294+ PoolTask :: HandleManagementRequest ( request) => match * request {
295+ PoolManagementRequest :: CheckIn ( connection) => {
296+ self . check_in ( * connection) ;
297+ }
298+ PoolManagementRequest :: Clear {
299+ cause, service_id, ..
300+ } => {
301+ self . clear ( cause, service_id) ;
302+ }
303+ PoolManagementRequest :: MarkAsReady { .. } => {
304+ self . mark_as_ready ( ) ;
305+ }
306+ PoolManagementRequest :: HandleConnectionSucceeded ( conn) => {
307+ self . handle_connection_succeeded ( conn) ;
308+ }
309+ PoolManagementRequest :: HandleConnectionFailed => {
310+ self . handle_connection_failed ( ) ;
311+ }
312+ #[ cfg( test) ]
313+ PoolManagementRequest :: Sync ( tx) => {
314+ let _ = tx. send ( ( ) ) ;
315+ }
316+ } ,
320317 PoolTask :: Maintenance => {
321318 self . perform_maintenance ( ) ;
322319 }
@@ -372,7 +369,7 @@ impl ConnectionPoolWorker {
372369 }
373370
374371 conn. mark_as_in_use ( self . manager . clone ( ) ) ;
375- if let Err ( request) = request. fulfill ( ConnectionRequestResult :: Pooled ( conn) ) {
372+ if let Err ( request) = request. fulfill ( ConnectionRequestResult :: Pooled ( Box :: new ( conn) ) ) {
376373 // checking out thread stopped listening, indicating it hit the WaitQueue
377374 // timeout, so we put connection back into pool.
378375 let mut connection = request. unwrap_pooled_connection ( ) ;
@@ -466,7 +463,8 @@ impl ConnectionPoolWorker {
466463 let count = self . service_connection_count . entry ( sid) . or_insert ( 0 ) ;
467464 * count += 1 ;
468465 }
469- if let ConnectionSucceeded :: ForPool ( mut connection) = connection {
466+ if let ConnectionSucceeded :: ForPool ( connection) = connection {
467+ let mut connection = * connection;
470468 connection. mark_as_available ( ) ;
471469 self . available_connections . push_back ( connection) ;
472470 }
@@ -623,8 +621,9 @@ impl ConnectionPoolWorker {
623621 . await ;
624622
625623 if let Ok ( connection) = connection {
626- manager
627- . handle_connection_succeeded ( ConnectionSucceeded :: ForPool ( connection) )
624+ manager. handle_connection_succeeded ( ConnectionSucceeded :: ForPool ( Box :: new (
625+ connection,
626+ ) ) )
628627 }
629628 } ) ;
630629 }
@@ -690,7 +689,7 @@ enum PoolState {
690689#[ derive( Debug ) ]
691690enum PoolTask {
692691 /// Handle a management request from a `PoolManager`.
693- HandleManagementRequest ( PoolManagementRequest ) ,
692+ HandleManagementRequest ( Box < PoolManagementRequest > ) ,
694693
695694 /// Fulfill the given connection request.
696695 CheckOut ( ConnectionRequest ) ,
@@ -701,22 +700,25 @@ enum PoolTask {
701700
702701impl From < PoolManagementRequest > for PoolTask {
703702 fn from ( request : PoolManagementRequest ) -> Self {
704- PoolTask :: HandleManagementRequest ( request)
703+ PoolTask :: HandleManagementRequest ( Box :: new ( request) )
705704 }
706705}
707706
708707/// Constructs a new channel for for monitoring whether this pool still has references
709708/// to it.
710709fn handle_channel ( ) -> ( PoolWorkerHandle , HandleListener ) {
711710 let ( sender, receiver) = mpsc:: channel ( 1 ) ;
712- ( PoolWorkerHandle { sender } , HandleListener { receiver } )
711+ (
712+ PoolWorkerHandle { _sender : sender } ,
713+ HandleListener { receiver } ,
714+ )
713715}
714716
715717/// Handle to the worker. Once all handles have been dropped, the worker
716718/// will stop waiting for new requests and drop the pool itself.
717719#[ derive( Debug , Clone ) ]
718720pub ( super ) struct PoolWorkerHandle {
719- sender : mpsc:: Sender < ( ) > ,
721+ _sender : mpsc:: Sender < ( ) > ,
720722}
721723
722724impl PoolWorkerHandle {
0 commit comments