difftreelog
feat(evaluator) import resolver as_any method
in: master
1 file changed
crates/jrsonnet-evaluator/src/import.rsdiffbeforeafterboth6use fs::File;6use fs::File;7use std::fs;7use std::fs;8use std::io::Read;8use std::io::Read;9use std::{cell::RefCell, collections::HashMap, path::PathBuf, rc::Rc};9use std::{any::Any, cell::RefCell, collections::HashMap, path::PathBuf, rc::Rc};101011pub trait ImportResolver {11pub trait ImportResolver {12 fn resolve_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Rc<PathBuf>>;12 fn resolve_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Rc<PathBuf>>;13 fn load_file_contents(&self, resolved: &PathBuf) -> Result<Rc<str>>;13 fn load_file_contents(&self, resolved: &PathBuf) -> Result<Rc<str>>;14 unsafe fn as_any(&self) -> &dyn Any;14}15}151616pub struct DummyImportResolver;17pub struct DummyImportResolver;22 // Can be only caused by library direct consumer, not by supplied jsonnet23 // Can be only caused by library direct consumer, not by supplied jsonnet23 panic!("dummy resolver can't load any file")24 panic!("dummy resolver can't load any file")24 }25 }26 unsafe fn as_any(&self) -> &dyn Any {27 panic!("this resolver can't be used as any")28 }25}29}26impl Default for Box<dyn ImportResolver> {30impl Default for Box<dyn ImportResolver> {27 fn default() -> Self {31 fn default() -> Self {57 .map_err(|_e| create_error(Error::ImportBadFileUtf8(id.clone())))?;61 .map_err(|_e| create_error(Error::ImportBadFileUtf8(id.clone())))?;58 Ok(out.into())62 Ok(out.into())59 }63 }64 unsafe fn as_any(&self) -> &dyn Any {65 panic!("this resolver can't be used as any")66 }60}67}616862type ResolutionData = (PathBuf, PathBuf);69type ResolutionData = (PathBuf, PathBuf);80 .or_insert_with(|| self.inner.load_file_contents(resolved))87 .or_insert_with(|| self.inner.load_file_contents(resolved))81 .clone()88 .clone()82 }89 }90 unsafe fn as_any(&self) -> &dyn Any {91 panic!("this resolver can't be used as any")92 }83}93}8494