This repository has been archived on 2025-08-04. You can view files and clone it, but cannot push or open issues or pull requests.
rhaj/rhai_engine/rhaibook/rust/modules/index.md
2025-04-03 09:18:05 +02:00

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 |