Trait ryan::environment::loader::ImportLoader
source · pub trait ImportLoader: Debug {
// Required methods
fn resolve(
&self,
current: Option<&str>,
path: &str
) -> Result<String, Box<dyn Error + 'static>>;
fn load(
&self,
path: &str
) -> Result<Box<dyn Read>, Box<dyn Error + 'static>>;
// Provided methods
fn override(self, path: String, value: String) -> Override<Self>
where Self: Sized { ... }
fn block(self, path: String) -> Override<Self>
where Self: Sized { ... }
fn override_many(
self,
overrides: HashMap<String, Option<String>>
) -> Override<Self>
where Self: Sized { ... }
fn filter<F>(self, filter: F) -> Filter<Self, F>
where Self: Sized,
F: Fn(&str) -> bool { ... }
fn with_resolver<F, E>(self, resolver: F) -> WithResolver<Self, F>
where Self: Sized,
F: Fn(Option<&str>, &str) -> Result<String, E> { ... }
fn with_loader<F, R, E>(self, loader: F) -> WithLoader<Self, F>
where Self: Sized,
F: Fn(&str) -> Result<R, E>,
R: 'static + Read,
E: 'static + Error { ... }
}
Expand description
The loader trait for Ryan.
Required Methods§
sourcefn resolve(
&self,
current: Option<&str>,
path: &str
) -> Result<String, Box<dyn Error + 'static>>
fn resolve( &self, current: Option<&str>, path: &str ) -> Result<String, Box<dyn Error + 'static>>
Returns the absolute import path for a module, given a base and an optional
path. The base might be set to None
in some cases (e.g., when loading Ryan
from a string, not a file). Each loader implementation can choose how to treat
this value however it’s expedient.
Provided Methods§
sourcefn override(self, path: String, value: String) -> Override<Self>where
Self: Sized,
fn override(self, path: String, value: String) -> Override<Self>where Self: Sized,
Overrides a single path to be represented by a different model than would be represented by this loader.
sourcefn block(self, path: String) -> Override<Self>where
Self: Sized,
fn block(self, path: String) -> Override<Self>where Self: Sized,
Blocks a path from being resolved as a module.
sourcefn override_many(
self,
overrides: HashMap<String, Option<String>>
) -> Override<Self>where
Self: Sized,
fn override_many( self, overrides: HashMap<String, Option<String>> ) -> Override<Self>where Self: Sized,
Overrides the value imported by multiple paths. Pass None
as the value associated
to a key in the hashmap to deny access to a given path.
sourcefn filter<F>(self, filter: F) -> Filter<Self, F>where
Self: Sized,
F: Fn(&str) -> bool,
fn filter<F>(self, filter: F) -> Filter<Self, F>where Self: Sized, F: Fn(&str) -> bool,
Determines whether a path should be blocked or loaded based on a supplied closure.
sourcefn with_resolver<F, E>(self, resolver: F) -> WithResolver<Self, F>where
Self: Sized,
F: Fn(Option<&str>, &str) -> Result<String, E>,
fn with_resolver<F, E>(self, resolver: F) -> WithResolver<Self, F>where Self: Sized, F: Fn(Option<&str>, &str) -> Result<String, E>,
Change the resolve
method of the underlying loader.
sourcefn with_loader<F, R, E>(self, loader: F) -> WithLoader<Self, F>where
Self: Sized,
F: Fn(&str) -> Result<R, E>,
R: 'static + Read,
E: 'static + Error,
fn with_loader<F, R, E>(self, loader: F) -> WithLoader<Self, F>where Self: Sized, F: Fn(&str) -> Result<R, E>, R: 'static + Read, E: 'static + Error,
Change the load
method of the underlying loader.