Rhai allows organizing functionalities (functions, both Rust-based or script-based, and variables) into independent modules.

Modules can be disabled via the no_module feature.

A module has the type Module and holds a collection of functions, variables, type iterators and sub-modules.

It may be created entirely from Rust functions, or it may encapsulate a Rhai script together with the functions and variables defined by that script.

Other scripts can then load this module and use the functions and variables exported as if they were defined inside the same script.

Alternatively, modules can be registered directly into an Engine and made available to scripts either globally or under individual static module namespaces.

Usage Patterns

Global moduleEngine:: register_global_modulesimple nameignoredignored
Static moduleEngine:: register_static_modulenamespace-qualified nameyesyes
Dynamic moduleimport statementnamespace-qualified nameyesyes