11//! A pool of proc-macro server processes
22use std:: sync:: Arc ;
33
4- use crate :: {
5- MacroDylib , ProcMacro , ServerError , bidirectional_protocol:: SubCallback ,
6- process:: ProcMacroServerProcess ,
7- } ;
4+ use rayon:: iter:: { IntoParallelIterator , ParallelIterator } ;
5+
6+ use crate :: { MacroDylib , ProcMacro , ServerError , process:: ProcMacroServerProcess } ;
87
98#[ derive( Debug , Clone ) ]
109pub ( crate ) struct ProcMacroServerPool {
@@ -50,11 +49,7 @@ impl ProcMacroServerPool {
5049 } )
5150 }
5251
53- pub ( crate ) fn load_dylib (
54- & self ,
55- dylib : & MacroDylib ,
56- callback : Option < SubCallback < ' _ > > ,
57- ) -> Result < Vec < ProcMacro > , ServerError > {
52+ pub ( crate ) fn load_dylib ( & self , dylib : & MacroDylib ) -> Result < Vec < ProcMacro > , ServerError > {
5853 let _span = tracing:: info_span!( "ProcMacroServer::load_dylib" ) . entered ( ) ;
5954
6055 let dylib_path = Arc :: new ( dylib. path . clone ( ) ) ;
@@ -64,14 +59,17 @@ impl ProcMacroServerPool {
6459 let ( first, rest) = self . workers . split_first ( ) . expect ( "worker pool must not be empty" ) ;
6560
6661 let macros = first
67- . find_proc_macros ( & dylib. path , callback ) ?
62+ . find_proc_macros ( & dylib. path ) ?
6863 . map_err ( |e| ServerError { message : e, io : None } ) ?;
6964
70- for worker in rest {
71- worker
72- . find_proc_macros ( & dylib. path , callback) ?
73- . map_err ( |e| ServerError { message : e, io : None } ) ?;
74- }
65+ rest. into_par_iter ( )
66+ . map ( |worker| {
67+ worker
68+ . find_proc_macros ( & dylib. path ) ?
69+ . map ( |_| ( ) )
70+ . map_err ( |e| ServerError { message : e, io : None } )
71+ } )
72+ . collect :: < Result < ( ) , _ > > ( ) ?;
7573
7674 Ok ( macros
7775 . into_iter ( )
0 commit comments