aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_project_model/src/sysroot.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_project_model/src/sysroot.rs')
-rw-r--r--crates/ra_project_model/src/sysroot.rs32
1 files changed, 15 insertions, 17 deletions
diff --git a/crates/ra_project_model/src/sysroot.rs b/crates/ra_project_model/src/sysroot.rs
index c51957c1f..4ac4fa14d 100644
--- a/crates/ra_project_model/src/sysroot.rs
+++ b/crates/ra_project_model/src/sysroot.rs
@@ -2,7 +2,7 @@
2 2
3use anyhow::{bail, Context, Result}; 3use anyhow::{bail, Context, Result};
4use std::{ 4use std::{
5 env, 5 env, ops,
6 path::{Path, PathBuf}, 6 path::{Path, PathBuf},
7 process::{Command, Output}, 7 process::{Command, Output},
8}; 8};
@@ -19,10 +19,17 @@ pub struct SysrootCrate(RawId);
19impl_arena_id!(SysrootCrate); 19impl_arena_id!(SysrootCrate);
20 20
21#[derive(Debug, Clone)] 21#[derive(Debug, Clone)]
22struct SysrootCrateData { 22pub struct SysrootCrateData {
23 name: String, 23 pub name: String,
24 root: PathBuf, 24 pub root: PathBuf,
25 deps: Vec<SysrootCrate>, 25 pub deps: Vec<SysrootCrate>,
26}
27
28impl ops::Index<SysrootCrate> for Sysroot {
29 type Output = SysrootCrateData;
30 fn index(&self, index: SysrootCrate) -> &SysrootCrateData {
31 &self.crates[index]
32 }
26} 33}
27 34
28impl Sysroot { 35impl Sysroot {
@@ -129,18 +136,9 @@ fn get_or_install_rust_src(cargo_toml: &Path) -> Result<PathBuf> {
129 Ok(src_path) 136 Ok(src_path)
130} 137}
131 138
132impl SysrootCrate { 139impl SysrootCrateData {
133 pub fn name(self, sysroot: &Sysroot) -> &str { 140 pub fn root_dir(&self) -> &Path {
134 &sysroot.crates[self].name 141 self.root.parent().unwrap()
135 }
136 pub fn root(self, sysroot: &Sysroot) -> &Path {
137 sysroot.crates[self].root.as_path()
138 }
139 pub fn root_dir(self, sysroot: &Sysroot) -> &Path {
140 self.root(sysroot).parent().unwrap()
141 }
142 pub fn deps<'a>(self, sysroot: &'a Sysroot) -> impl Iterator<Item = SysrootCrate> + 'a {
143 sysroot.crates[self].deps.iter().copied()
144 } 142 }
145} 143}
146 144