From a90401aeed24203b28012c040f19cda66e0589f3 Mon Sep 17 00:00:00 2001 From: veetaha Date: Wed, 1 Apr 2020 03:01:30 +0300 Subject: Migrate to iters some more --- crates/ra_project_model/src/lib.rs | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/crates/ra_project_model/src/lib.rs b/crates/ra_project_model/src/lib.rs index 950db71ec..e9c0c83db 100644 --- a/crates/ra_project_model/src/lib.rs +++ b/crates/ra_project_model/src/lib.rs @@ -152,24 +152,17 @@ impl ProjectWorkspace { pub fn proc_macro_dylib_paths(&self) -> Vec { match self { - ProjectWorkspace::Json { project } => { - let mut proc_macro_dylib_paths = Vec::with_capacity(project.crates.len()); - for krate in &project.crates { - if let Some(out_dir) = &krate.proc_macro_dylib_path { - proc_macro_dylib_paths.push(out_dir.to_path_buf()); - } - } - proc_macro_dylib_paths - } - ProjectWorkspace::Cargo { cargo, sysroot: _sysroot } => { - let mut proc_macro_dylib_paths = Vec::with_capacity(cargo.packages().len()); - for pkg in cargo.packages() { - if let Some(dylib_path) = &cargo[pkg].proc_macro_dylib_path { - proc_macro_dylib_paths.push(dylib_path.to_path_buf()); - } - } - proc_macro_dylib_paths - } + ProjectWorkspace::Json { project } => project + .crates + .iter() + .filter_map(|krate| krate.proc_macro_dylib_path.as_ref()) + .cloned() + .collect(), + ProjectWorkspace::Cargo { cargo, sysroot: _sysroot } => cargo + .packages() + .filter_map(|pkg| cargo[pkg].proc_macro_dylib_path.as_ref()) + .cloned() + .collect(), } } -- cgit v1.2.3