pub trait Resolver: Send + Sync {
// Required method
fn resolve(&self, lua: &Lua, name: &str) -> Option<Result<Value>>;
}Expand description
Minimal abstraction for module resolution.
Receives require(name) and returns Some(Result<Value>) if this
Resolver is responsible. Returns None if not.
§Return value protocol
None= “unknown name”. The next Resolver gets a chance.Some(Ok(v))= resolution complete. This value is returned to Lua.Some(Err(e))= “responsible but failed”. Propagated immediately as an error.
§Example
use mlua_pkg::Resolver;
use mlua::{Lua, Result, Value};
struct VersionResolver;
impl Resolver for VersionResolver {
fn resolve(&self, lua: &Lua, name: &str) -> Option<Result<Value>> {
if name == "version" {
Some(lua.create_string("1.0.0").map(Value::String))
} else {
None
}
}
}