diff options
Diffstat (limited to 'crates/ra_project_model')
-rw-r--r-- | crates/ra_project_model/src/lib.rs | 7 |
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 | } |