DylibModuleResolver
DylibModuleResolver
resides in the rhai-dylib
crate which must be specified
as a dependency:
[dependencies]
rhai-dylib = { version = "0.1" }
rhai-dylib
currently supports only Linux and Windows.
Parallel to how the FileModuleResolver
works, DylibModuleResolver
loads external
native Rust modules from compiled dynamic shared libraries (e.g. .so
in Linux and .dll
in
Windows).
Therefore, FileModuleResolver
loads Rhai script files while DylibModuleResolver
loads native Rust shared libraries. It is very common to have the two work together.
Example
use rhai::{Engine, Module};
use rhai::module_resolvers::{FileModuleResolver, ModuleResolversCollection};
use rhai_dylib::module_resolvers::DylibModuleResolver;
let mut engine = Engine::new();
// Use a module resolvers collection
let mut resolvers = ModuleResolversCollection::new();
// First search for script files in the file system
resolvers += FileModuleResolver::new();
// Then search for shared-library plugins in the file system
resolvers += DylibModuleResolver::new();
// Set the module resolver into the engine
engine.set_module_resolver(resolvers);
┌─────────────┐
│ Rhai Script │
└─────────────┘
// If there is 'path/to/my_module.rhai', load it.
// Otherwise, check for 'path/to/my_module.so' on Linux
// ('path/to/my_module.dll' on Windows).
import "path/to/my_module" as m;
m::greet();