@@ -170,7 +170,7 @@ impl ProjectWorkspace {
170170 pub fn load (
171171 manifest : ProjectManifest ,
172172 config : & CargoConfig ,
173- progress : & dyn Fn ( String ) ,
173+ progress : & ( dyn Fn ( String ) + Sync ) ,
174174 ) -> anyhow:: Result < ProjectWorkspace > {
175175 ProjectWorkspace :: load_inner ( & manifest, config, progress)
176176 . with_context ( || format ! ( "Failed to load the project at {manifest}" ) )
@@ -179,7 +179,7 @@ impl ProjectWorkspace {
179179 fn load_inner (
180180 manifest : & ProjectManifest ,
181181 config : & CargoConfig ,
182- progress : & dyn Fn ( String ) ,
182+ progress : & ( dyn Fn ( String ) + Sync ) ,
183183 ) -> anyhow:: Result < ProjectWorkspace > {
184184 let res = match manifest {
185185 ProjectManifest :: ProjectJson ( project_json) => {
@@ -206,7 +206,7 @@ impl ProjectWorkspace {
206206 fn load_cargo (
207207 cargo_toml : & ManifestPath ,
208208 config : & CargoConfig ,
209- progress : & dyn Fn ( String ) ,
209+ progress : & ( dyn Fn ( String ) + Sync ) ,
210210 ) -> Result < ProjectWorkspace , anyhow:: Error > {
211211 progress ( "Discovering sysroot" . to_owned ( ) ) ;
212212 let CargoConfig {
@@ -304,7 +304,7 @@ impl ProjectWorkspace {
304304 & sysroot,
305305 * no_deps,
306306 false ,
307- & |_| ( ) ,
307+ progress ,
308308 ) {
309309 Ok ( ( meta, _error) ) => {
310310 let workspace = CargoWorkspace :: new (
@@ -347,13 +347,16 @@ impl ProjectWorkspace {
347347 & sysroot,
348348 * no_deps,
349349 false ,
350- & |_| ( ) ,
350+ progress ,
351351 )
352352 } ) ;
353353 let loaded_sysroot = s. spawn ( || {
354- sysroot. load_workspace ( & RustSourceWorkspaceConfig :: CargoMetadata (
355- sysroot_metadata_config ( extra_env, & targets) ,
356- ) )
354+ sysroot. load_workspace (
355+ & RustSourceWorkspaceConfig :: CargoMetadata ( sysroot_metadata_config (
356+ extra_env, & targets,
357+ ) ) ,
358+ progress,
359+ )
357360 } ) ;
358361 let cargo_config_extra_env =
359362 s. spawn ( || cargo_config_env ( cargo_toml, extra_env, & sysroot) ) ;
@@ -411,7 +414,7 @@ impl ProjectWorkspace {
411414 pub fn load_inline (
412415 mut project_json : ProjectJson ,
413416 config : & CargoConfig ,
414- progress : & dyn Fn ( String ) ,
417+ progress : & ( dyn Fn ( String ) + Sync ) ,
415418 ) -> ProjectWorkspace {
416419 progress ( "Discovering sysroot" . to_owned ( ) ) ;
417420 let mut sysroot =
@@ -443,11 +446,18 @@ impl ProjectWorkspace {
443446 } ) ;
444447 let loaded_sysroot = s. spawn ( || {
445448 if let Some ( sysroot_project) = sysroot_project {
446- sysroot. load_workspace ( & RustSourceWorkspaceConfig :: Json ( * sysroot_project) )
449+ sysroot. load_workspace (
450+ & RustSourceWorkspaceConfig :: Json ( * sysroot_project) ,
451+ progress,
452+ )
447453 } else {
448- sysroot. load_workspace ( & RustSourceWorkspaceConfig :: CargoMetadata (
449- sysroot_metadata_config ( & config. extra_env , & targets) ,
450- ) )
454+ sysroot. load_workspace (
455+ & RustSourceWorkspaceConfig :: CargoMetadata ( sysroot_metadata_config (
456+ & config. extra_env ,
457+ & targets,
458+ ) ) ,
459+ progress,
460+ )
451461 }
452462 } ) ;
453463
@@ -497,9 +507,13 @@ impl ProjectWorkspace {
497507 . unwrap_or_default ( ) ;
498508 let rustc_cfg = rustc_cfg:: get ( query_config, None , & config. extra_env ) ;
499509 let data_layout = target_data_layout:: get ( query_config, None , & config. extra_env ) ;
500- let loaded_sysroot = sysroot. load_workspace ( & RustSourceWorkspaceConfig :: CargoMetadata (
501- sysroot_metadata_config ( & config. extra_env , & targets) ,
502- ) ) ;
510+ let loaded_sysroot = sysroot. load_workspace (
511+ & RustSourceWorkspaceConfig :: CargoMetadata ( sysroot_metadata_config (
512+ & config. extra_env ,
513+ & targets,
514+ ) ) ,
515+ & |_| ( ) ,
516+ ) ;
503517 if let Some ( loaded_sysroot) = loaded_sysroot {
504518 sysroot. set_workspace ( loaded_sysroot) ;
505519 }
0 commit comments