aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_project_model/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_project_model/src/lib.rs')
-rw-r--r--crates/ra_project_model/src/lib.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/crates/ra_project_model/src/lib.rs b/crates/ra_project_model/src/lib.rs
index ded222446..c566ec0fb 100644
--- a/crates/ra_project_model/src/lib.rs
+++ b/crates/ra_project_model/src/lib.rs
@@ -50,20 +50,25 @@ impl ProjectWorkspace {
50 } 50 }
51 } 51 }
52 52
53 pub fn add_roots(&self, roots: &mut Vec<PathBuf>) { 53 pub fn to_roots(&self) -> Vec<PathBuf> {
54 match self { 54 match self {
55 ProjectWorkspace::Json { project } => { 55 ProjectWorkspace::Json { project } => {
56 let mut roots = Vec::with_capacity(project.roots.len());
56 for root in &project.roots { 57 for root in &project.roots {
57 roots.push(root.path.clone()); 58 roots.push(root.path.clone());
58 } 59 }
60 roots
59 } 61 }
60 ProjectWorkspace::Cargo { cargo, sysroot } => { 62 ProjectWorkspace::Cargo { cargo, sysroot } => {
63 let mut roots =
64 Vec::with_capacity(cargo.packages().count() + sysroot.crates().count());
61 for pkg in cargo.packages() { 65 for pkg in cargo.packages() {
62 roots.push(pkg.root(&cargo).to_path_buf()); 66 roots.push(pkg.root(&cargo).to_path_buf());
63 } 67 }
64 for krate in sysroot.crates() { 68 for krate in sysroot.crates() {
65 roots.push(krate.root_dir(&sysroot).to_path_buf()) 69 roots.push(krate.root_dir(&sysroot).to_path_buf())
66 } 70 }
71 roots
67 } 72 }
68 } 73 }
69 } 74 }