pub enum ProjectWorkspace {
Cargo {
cargo: CargoWorkspace,
build_scripts: WorkspaceBuildScripts,
sysroot: Result<Sysroot, Option<String>>,
rustc: Result<(CargoWorkspace, WorkspaceBuildScripts), Option<String>>,
rustc_cfg: Vec<CfgFlag>,
cfg_overrides: CfgOverrides,
toolchain: Option<Version>,
target_layout: Result<String, String>,
},
Json {
project: ProjectJson,
sysroot: Result<Sysroot, Option<String>>,
rustc_cfg: Vec<CfgFlag>,
toolchain: Option<Version>,
},
DetachedFiles {
files: Vec<AbsPathBuf>,
sysroot: Result<Sysroot, Option<String>>,
rustc_cfg: Vec<CfgFlag>,
},
}
Variants§
Cargo
Fields
cargo: CargoWorkspace
build_scripts: WorkspaceBuildScripts
rustc: Result<(CargoWorkspace, WorkspaceBuildScripts), Option<String>>
rustc_cfg: Vec<CfgFlag>
Holds cfg flags for the current target. We get those by running
rustc --print cfg
.
FIXME: make this a per-crate map, as, eg, build.rs might have a different target.
cfg_overrides: CfgOverrides
Project workspace was discovered by running cargo metadata
and rustc --print sysroot
.
Json
Fields
project: ProjectJson
Project workspace was manually specified using a rust-project.json
file.
DetachedFiles
Fields
files: Vec<AbsPathBuf>
Project with a set of disjoint files, not belonging to any particular workspace. Backed by basic sysroot crates for basic completion and highlighting.
Implementations§
source§impl ProjectWorkspace
impl ProjectWorkspace
pub fn load( manifest: ProjectManifest, config: &CargoConfig, progress: &dyn Fn(String) ) -> Result<ProjectWorkspace>
pub fn load_inline( project_json: ProjectJson, target: Option<&str>, extra_env: &FxHashMap<String, String>, toolchain: Option<Version> ) -> ProjectWorkspace
pub fn load_detached_files( detached_files: Vec<AbsPathBuf>, config: &CargoConfig ) -> Result<ProjectWorkspace>
sourcepub fn run_build_scripts(
&self,
config: &CargoConfig,
progress: &dyn Fn(String)
) -> Result<WorkspaceBuildScripts>
pub fn run_build_scripts( &self, config: &CargoConfig, progress: &dyn Fn(String) ) -> Result<WorkspaceBuildScripts>
Runs the build scripts for this ProjectWorkspace
.
sourcepub fn run_all_build_scripts(
workspaces: &[ProjectWorkspace],
config: &CargoConfig,
progress: &dyn Fn(String)
) -> Vec<Result<WorkspaceBuildScripts>>
pub fn run_all_build_scripts( workspaces: &[ProjectWorkspace], config: &CargoConfig, progress: &dyn Fn(String) ) -> Vec<Result<WorkspaceBuildScripts>>
Runs the build scripts for the given ProjectWorkspace
s. Depending on the invocation
strategy this may run a single build process for all project workspaces.
pub fn set_build_scripts(&mut self, bs: WorkspaceBuildScripts)
pub fn workspace_definition_path(&self) -> Option<&AbsPath>
pub fn find_sysroot_proc_macro_srv(&self) -> Result<AbsPathBuf>
sourcepub fn to_roots(&self) -> Vec<PackageRoot>
pub fn to_roots(&self) -> Vec<PackageRoot>
Returns the roots for the current ProjectWorkspace
The return type contains the path and whether or not
the root is a member of the current workspace
pub fn n_packages(&self) -> usize
pub fn to_crate_graph( &self, load: &mut dyn FnMut(&AbsPath) -> Option<FileId>, extra_env: &FxHashMap<String, String> ) -> (CrateGraph, ProcMacroPaths)
pub fn eq_ignore_build_data(&self, other: &Self) -> bool
Trait Implementations§
source§impl Clone for ProjectWorkspace
impl Clone for ProjectWorkspace
source§fn clone(&self) -> ProjectWorkspace
fn clone(&self) -> ProjectWorkspace
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more