git.delta.rocks / jrsonnet / refs/commits / 0ba2642a3a69

difftreelog

style(evaluator) fix clippy warnings

Лач2020-06-27parent: #0afc5f7.patch.diff
in: master

3 files changed

modifiedcrates/jsonnet-evaluator/src/evaluate.rsdiffbeforeafterboth
--- a/crates/jsonnet-evaluator/src/evaluate.rs
+++ b/crates/jsonnet-evaluator/src/evaluate.rs
@@ -5,9 +5,8 @@
 };
 use closure::closure;
 use jsonnet_parser::{
-	el, Arg, ArgsDesc, AssertStmt, BinaryOpType, BindSpec, CompSpec, Expr, FieldMember,
-	ForSpecData, IfSpecData, LiteralType, LocExpr, Member, ObjBody, ParamsDesc, UnaryOpType,
-	Visibility,
+	AssertStmt, BinaryOpType, BindSpec, CompSpec, Expr, FieldMember, ForSpecData, IfSpecData,
+	LiteralType, LocExpr, Member, ObjBody, ParamsDesc, UnaryOpType, Visibility,
 };
 use std::{
 	collections::{BTreeMap, HashMap},
@@ -203,7 +202,7 @@
 	})
 }
 
-pub fn evaluate_member_list_object(context: Context, members: &Vec<Member>) -> Result<ObjValue> {
+pub fn evaluate_member_list_object(context: Context, members: &[Member]) -> Result<ObjValue> {
 	let new_bindings = FutureNewBindings::new();
 	let future_this = FutureObjValue::new();
 	let context_creator = context_creator!(
modifiedcrates/jsonnet-evaluator/src/import.rsdiffbeforeafterboth
before · crates/jsonnet-evaluator/src/import.rs
1use crate::create_error;2use crate::error::{Error, Result};3use fs::File;4use std::fs;5use std::io::Read;6use std::{cell::RefCell, collections::HashMap, path::PathBuf, rc::Rc};78pub trait ImportResolver {9	fn resolve_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Rc<PathBuf>>;10	fn load_file_contents(&self, resolved: &PathBuf) -> Result<Rc<str>>;11}1213pub struct DummyImportResolver;14impl ImportResolver for DummyImportResolver {15	fn resolve_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Rc<PathBuf>> {16		create_error(Error::ImportNotSupported(from.clone(), path.clone()))17	}18	fn load_file_contents(&self, _resolved: &PathBuf) -> Result<Rc<str>> {19		// Can be only caused by library direct consumer, not by supplied jsonnet20		panic!("dummy resolver can't load any file")21	}22}23impl Default for Box<dyn ImportResolver> {24	fn default() -> Self {25		Box::new(DummyImportResolver)26	}27}2829pub struct FileImportResolver {30	pub library_paths: Vec<PathBuf>,31}32impl ImportResolver for FileImportResolver {33	fn resolve_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Rc<PathBuf>> {34		let mut new_path = from.clone();35		new_path.push(path);36		if new_path.exists() {37			Ok(Rc::new(new_path))38		} else {39			for library_path in self.library_paths.iter() {40				let mut cloned = library_path.clone();41				cloned.push(path);42				if cloned.exists() {43					return Ok(Rc::new(cloned));44				}45			}46			create_error(Error::ImportFileNotFound(from.clone(), path.clone()))47		}48	}49	fn load_file_contents(&self, id: &PathBuf) -> Result<Rc<str>> {50		let mut file = File::open(id).map_err(|_e| {51			create_error::<()>(Error::ResolvedFileNotFound(id.clone()))52				.err()53				.unwrap()54		})?;55		let mut out = String::new();56		file.read_to_string(&mut out).map_err(|_e| {57			create_error::<()>(Error::ImportBadFileUtf8(id.clone()))58				.err()59				.unwrap()60		})?;61		Ok(out.into())62	}63}6465pub struct CachingImportResolver {66	resolution_cache: RefCell<HashMap<(PathBuf, PathBuf), Result<Rc<PathBuf>>>>,67	loading_cache: RefCell<HashMap<PathBuf, Result<Rc<str>>>>,68	inner: Box<dyn ImportResolver>,69}70impl ImportResolver for CachingImportResolver {71	fn resolve_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Rc<PathBuf>> {72		self.resolution_cache73			.borrow_mut()74			.entry((from.clone(), path.clone()))75			.or_insert_with(|| self.inner.resolve_file(from, path))76			.clone()77	}78	fn load_file_contents(&self, resolved: &PathBuf) -> Result<Rc<str>> {79		self.loading_cache80			.borrow_mut()81			.entry(resolved.clone())82			.or_insert_with(|| self.inner.load_file_contents(resolved))83			.clone()84	}85}
after · crates/jsonnet-evaluator/src/import.rs
1use crate::create_error;2use crate::error::{Error, Result};3use fs::File;4use std::fs;5use std::io::Read;6use std::{cell::RefCell, collections::HashMap, path::PathBuf, rc::Rc};78pub trait ImportResolver {9	fn resolve_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Rc<PathBuf>>;10	fn load_file_contents(&self, resolved: &PathBuf) -> Result<Rc<str>>;11}1213pub struct DummyImportResolver;14impl ImportResolver for DummyImportResolver {15	fn resolve_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Rc<PathBuf>> {16		create_error(Error::ImportNotSupported(from.clone(), path.clone()))17	}18	fn load_file_contents(&self, _resolved: &PathBuf) -> Result<Rc<str>> {19		// Can be only caused by library direct consumer, not by supplied jsonnet20		panic!("dummy resolver can't load any file")21	}22}23impl Default for Box<dyn ImportResolver> {24	fn default() -> Self {25		Box::new(DummyImportResolver)26	}27}2829pub struct FileImportResolver {30	pub library_paths: Vec<PathBuf>,31}32impl ImportResolver for FileImportResolver {33	fn resolve_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Rc<PathBuf>> {34		let mut new_path = from.clone();35		new_path.push(path);36		if new_path.exists() {37			Ok(Rc::new(new_path))38		} else {39			for library_path in self.library_paths.iter() {40				let mut cloned = library_path.clone();41				cloned.push(path);42				if cloned.exists() {43					return Ok(Rc::new(cloned));44				}45			}46			create_error(Error::ImportFileNotFound(from.clone(), path.clone()))47		}48	}49	fn load_file_contents(&self, id: &PathBuf) -> Result<Rc<str>> {50		let mut file = File::open(id).map_err(|_e| {51			create_error::<()>(Error::ResolvedFileNotFound(id.clone()))52				.err()53				.unwrap()54		})?;55		let mut out = String::new();56		file.read_to_string(&mut out).map_err(|_e| {57			create_error::<()>(Error::ImportBadFileUtf8(id.clone()))58				.err()59				.unwrap()60		})?;61		Ok(out.into())62	}63}6465type ResolutionData = (PathBuf, PathBuf);66pub struct CachingImportResolver {67	resolution_cache: RefCell<HashMap<ResolutionData, Result<Rc<PathBuf>>>>,68	loading_cache: RefCell<HashMap<PathBuf, Result<Rc<str>>>>,69	inner: Box<dyn ImportResolver>,70}71impl ImportResolver for CachingImportResolver {72	fn resolve_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Rc<PathBuf>> {73		self.resolution_cache74			.borrow_mut()75			.entry((from.clone(), path.clone()))76			.or_insert_with(|| self.inner.resolve_file(from, path))77			.clone()78	}79	fn load_file_contents(&self, resolved: &PathBuf) -> Result<Rc<str>> {80		self.loading_cache81			.borrow_mut()82			.entry(resolved.clone())83			.or_insert_with(|| self.inner.load_file_contents(resolved))84			.clone()85	}86}
modifiedcrates/jsonnet-evaluator/src/lib.rsdiffbeforeafterboth
--- a/crates/jsonnet-evaluator/src/lib.rs
+++ b/crates/jsonnet-evaluator/src/lib.rs
@@ -200,7 +200,7 @@
 			self.0
 				.str_files
 				.borrow_mut()
-				.insert(path.clone(), file_str.into());
+				.insert(path.clone(), file_str);
 		}
 		Ok(self.0.str_files.borrow().get(&path).cloned().unwrap())
 	}