@@ -170,7 +170,7 @@ impl ProjectWorkspace {
170
170
pub fn load (
171
171
manifest : ProjectManifest ,
172
172
config : & CargoConfig ,
173
- progress : & dyn Fn ( String ) ,
173
+ progress : & ( dyn Fn ( String ) + Sync ) ,
174
174
) -> anyhow:: Result < ProjectWorkspace > {
175
175
ProjectWorkspace :: load_inner ( & manifest, config, progress)
176
176
. with_context ( || format ! ( "Failed to load the project at {manifest}" ) )
@@ -179,7 +179,7 @@ impl ProjectWorkspace {
179
179
fn load_inner (
180
180
manifest : & ProjectManifest ,
181
181
config : & CargoConfig ,
182
- progress : & dyn Fn ( String ) ,
182
+ progress : & ( dyn Fn ( String ) + Sync ) ,
183
183
) -> anyhow:: Result < ProjectWorkspace > {
184
184
let res = match manifest {
185
185
ProjectManifest :: ProjectJson ( project_json) => {
@@ -206,7 +206,7 @@ impl ProjectWorkspace {
206
206
fn load_cargo (
207
207
cargo_toml : & ManifestPath ,
208
208
config : & CargoConfig ,
209
- progress : & dyn Fn ( String ) ,
209
+ progress : & ( dyn Fn ( String ) + Sync ) ,
210
210
) -> Result < ProjectWorkspace , anyhow:: Error > {
211
211
progress ( "Discovering sysroot" . to_owned ( ) ) ;
212
212
let CargoConfig {
@@ -304,7 +304,7 @@ impl ProjectWorkspace {
304
304
& sysroot,
305
305
* no_deps,
306
306
false ,
307
- & |_| ( ) ,
307
+ progress ,
308
308
) {
309
309
Ok ( ( meta, _error) ) => {
310
310
let workspace = CargoWorkspace :: new (
@@ -347,13 +347,16 @@ impl ProjectWorkspace {
347
347
& sysroot,
348
348
* no_deps,
349
349
false ,
350
- & |_| ( ) ,
350
+ progress ,
351
351
)
352
352
} ) ;
353
353
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
+ )
357
360
} ) ;
358
361
let cargo_config_extra_env =
359
362
s. spawn ( || cargo_config_env ( cargo_toml, extra_env, & sysroot) ) ;
@@ -411,7 +414,7 @@ impl ProjectWorkspace {
411
414
pub fn load_inline (
412
415
mut project_json : ProjectJson ,
413
416
config : & CargoConfig ,
414
- progress : & dyn Fn ( String ) ,
417
+ progress : & ( dyn Fn ( String ) + Sync ) ,
415
418
) -> ProjectWorkspace {
416
419
progress ( "Discovering sysroot" . to_owned ( ) ) ;
417
420
let mut sysroot =
@@ -443,11 +446,18 @@ impl ProjectWorkspace {
443
446
} ) ;
444
447
let loaded_sysroot = s. spawn ( || {
445
448
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
+ )
447
453
} 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
+ )
451
461
}
452
462
} ) ;
453
463
@@ -497,9 +507,13 @@ impl ProjectWorkspace {
497
507
. unwrap_or_default ( ) ;
498
508
let rustc_cfg = rustc_cfg:: get ( query_config, None , & config. extra_env ) ;
499
509
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
+ ) ;
503
517
if let Some ( loaded_sysroot) = loaded_sysroot {
504
518
sysroot. set_workspace ( loaded_sysroot) ;
505
519
}
0 commit comments