Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project-model/src/workspace.rs')
| -rw-r--r-- | crates/project-model/src/workspace.rs | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index d9d3cab456..72ddf80928 100644 --- a/crates/project-model/src/workspace.rs +++ b/crates/project-model/src/workspace.rs @@ -188,17 +188,26 @@ impl ProjectWorkspace { })?; let cargo = CargoWorkspace::new(meta); - let sysroot = if config.no_sysroot { - None - } else { - Some(Sysroot::discover(cargo_toml.parent(), &config.extra_env).with_context( - || { + let sysroot = match &config.sysroot { + Some(RustcSource::Path(path)) => { + Some(Sysroot::with_sysroot_dir(path.clone()).with_context(|| { format!( + "Failed to find sysroot for Cargo.toml file {}.", + cargo_toml.display() + ) + })?) + } + Some(RustcSource::Discover) => Some( + Sysroot::discover(cargo_toml.parent(), &config.extra_env).with_context( + || { + format!( "Failed to find sysroot for Cargo.toml file {}. Is rust-src installed?", cargo_toml.display() ) - }, - )?) + }, + )?, + ), + None => None, }; let rustc_dir = match &config.rustc_source { |