Skip to main content

Resolver

Trait Resolver 

Source
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
        }
    }
}

Required Methods§

Source

fn resolve(&self, lua: &Lua, name: &str) -> Option<Result<Value>>

Implementors§