spo_rhai/module/resolvers/
mod.rs1use crate::eval::GlobalRuntimeState;
2use crate::func::SendSync;
3use crate::{Engine, Position, RhaiResultOf, Scope, SharedModule, AST};
4#[cfg(feature = "no_std")]
5use std::prelude::v1::*;
6
7mod collection;
8mod dummy;
9mod file;
10mod stat;
11
12pub use collection::ModuleResolversCollection;
13pub use dummy::DummyModuleResolver;
14#[cfg(not(feature = "no_std"))]
15#[cfg(any(not(target_family = "wasm"), not(target_os = "unknown")))]
16pub use file::FileModuleResolver;
17pub use stat::StaticModuleResolver;
18
19pub trait ModuleResolver: SendSync {
21 fn resolve(
23 &self,
24 engine: &Engine,
25 source: Option<&str>,
26 path: &str,
27 pos: Position,
28 ) -> RhaiResultOf<SharedModule>;
29
30 #[allow(unused_variables)]
36 fn resolve_raw(
37 &self,
38 engine: &Engine,
39 global: &mut GlobalRuntimeState,
40 scope: &mut Scope,
41 path: &str,
42 pos: Position,
43 ) -> RhaiResultOf<SharedModule> {
44 self.resolve(engine, global.source(), path, pos)
45 }
46
47 #[allow(unused_variables)]
57 #[must_use]
58 fn resolve_ast(
59 &self,
60 engine: &Engine,
61 source: Option<&str>,
62 path: &str,
63 pos: Position,
64 ) -> Option<RhaiResultOf<AST>> {
65 None
66 }
67}