From 7fcda5aa46808eed478defbd0494c6e11fee2ac6 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 25 Aug 2020 17:53:24 +0200 Subject: Prepare to share sysroot lowering code between Cargo & ProjectJSON --- crates/project_model/src/sysroot.rs | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) (limited to 'crates/project_model/src/sysroot.rs') diff --git a/crates/project_model/src/sysroot.rs b/crates/project_model/src/sysroot.rs index 687e15337..74c0eda9a 100644 --- a/crates/project_model/src/sysroot.rs +++ b/crates/project_model/src/sysroot.rs @@ -34,16 +34,10 @@ impl ops::Index for Sysroot { } impl Sysroot { - pub fn core(&self) -> Option { - self.by_name("core") - } - - pub fn alloc(&self) -> Option { - self.by_name("alloc") - } - - pub fn std(&self) -> Option { - self.by_name("std") + pub fn public_deps(&self) -> impl Iterator + '_ { + // core is added as a dependency before std in order to + // mimic rustcs dependency order + vec!["core", "alloc", "std"].into_iter().filter_map(move |it| Some((it, self.by_name(it)?))) } pub fn proc_macro(&self) -> Option { @@ -81,7 +75,7 @@ impl Sysroot { } } - if let Some(std) = sysroot.std() { + if let Some(std) = sysroot.by_name("std") { for dep in STD_DEPS.trim().lines() { if let Some(dep) = sysroot.by_name(dep) { sysroot.crates[std].deps.push(dep) @@ -89,8 +83,8 @@ impl Sysroot { } } - if let Some(alloc) = sysroot.alloc() { - if let Some(core) = sysroot.core() { + if let Some(alloc) = sysroot.by_name("alloc") { + if let Some(core) = sysroot.by_name("core") { sysroot.crates[alloc].deps.push(core); } } -- cgit v1.2.3