More Rustic API for Env

This commit is contained in:
Aleksey Kladov 2020-07-21 17:17:21 +02:00
parent eb613c74da
commit b68ef1231d
4 changed files with 8 additions and 20 deletions

View file

@ -222,7 +222,7 @@ impl From<Fixture> for FileMeta {
.edition
.as_ref()
.map_or(Edition::Edition2018, |v| Edition::from_str(&v).unwrap()),
env: Env::from(f.env.iter()),
env: f.env.into_iter().collect(),
}
}
}

View file

@ -6,7 +6,7 @@
//! actual IO. See `vfs` and `project_model` in the `rust-analyzer` crate for how
//! actual IO is done and lowered to input.
use std::{fmt, ops, str::FromStr, sync::Arc};
use std::{fmt, iter::FromIterator, ops, str::FromStr, sync::Arc};
use ra_cfg::CfgOptions;
use ra_syntax::SmolStr;
@ -298,18 +298,9 @@ impl fmt::Display for Edition {
}
}
impl<'a, T> From<T> for Env
where
T: Iterator<Item = (&'a String, &'a String)>,
{
fn from(iter: T) -> Self {
let mut result = Self::default();
for (k, v) in iter {
result.entries.insert(k.to_owned(), v.to_owned());
}
result
impl FromIterator<(String, String)> for Env {
fn from_iter<T: IntoIterator<Item = (String, String)>>(iter: T) -> Self {
Env { entries: FromIterator::from_iter(iter) }
}
}

View file

@ -2,7 +2,7 @@
use std::sync::Arc;
use ra_cfg::CfgOptions;
use ra_db::{CrateName, Env, FileSet, SourceRoot, VfsPath};
use ra_db::{CrateName, FileSet, SourceRoot, VfsPath};
use test_utils::{
extract_annotations, extract_range_or_offset, Fixture, RangeOrOffset, CURSOR_MARKER,
};
@ -110,7 +110,7 @@ impl MockAnalysis {
data.edition.and_then(|it| it.parse().ok()).unwrap_or(Edition::Edition2018);
let file_id = FileId(i as u32 + 1);
let env = Env::from(data.env.iter());
let env = data.env.into_iter().collect();
if path == "/lib.rs" || path == "/main.rs" {
root_crate = Some(crate_graph.add_crate_root(
file_id,

View file

@ -258,10 +258,7 @@ impl ProjectWorkspace {
let file_path = &krate.root_module;
let file_id = load(&file_path)?;
let mut env = Env::default();
for (k, v) in &krate.env {
env.set(k, v.clone());
}
let env = krate.env.clone().into_iter().collect();
let proc_macro = krate
.proc_macro_dylib_path
.clone()