31 lines
1.3 KiB
Markdown
31 lines
1.3 KiB
Markdown
Modules
|
|
=======
|
|
|
|
{{#include ../../links.md}}
|
|
|
|
Rhai allows organizing functionalities ([functions], both Rust-based and scripted, and
|
|
[variables]) into independent _modules_.
|
|
|
|
A module has the type `rhai::Module` and holds a collection of [functions], [variables], [type
|
|
iterators] and sub-modules.
|
|
|
|
It may contain entirely Rust functions, or it may encapsulate a Rhai script together with
|
|
all the [functions] and [variables] defined by that script.
|
|
|
|
Other scripts then load this module and use the [functions] and [variables] [exported][`export`].
|
|
|
|
Alternatively, modules can be registered directly into an [`Engine`] and made available to scripts,
|
|
either globally or under individual static module [_namespaces_][function namespaces].
|
|
|
|
Modules can be disabled via the [`no_module`] feature.
|
|
|
|
|
|
Usage Patterns
|
|
--------------
|
|
|
|
| Usage | API | Lookup | Sub-modules? | Variables? |
|
|
| -------------- | :-------------------------------: | :----------------------: | :----------: | :--------: |
|
|
| Global module | `Engine:: register_global_module` | simple name | ignored | yes |
|
|
| Static module | `Engine:: register_static_module` | namespace-qualified name | yes | yes |
|
|
| Dynamic module | [`import`] statement | namespace-qualified name | yes | yes |
|