Packaged Utilities

A number of Rhai-driven tools can be found in the src/bin directory:


It is possible to turn these tools into [_Domain-Specific Tools_](../patterns/domain-tools.md).
ToolRequired feature(s)Description
rhai-runruns Rhai script files
rhai-replrustylinea simple REPL tool
rhai-dbgdebuggingthe Rhai Debugger
Some bin tools require certain [features] and will not be built by default without those [features] set.

For convenience, a feature named [`bin-features`][features] is available which is a combination of
the following:

|    Feature    | Description                                 |
| :-----------: | ------------------------------------------- |
|  [`decimal`]  | support for [decimal][rust_decimal] numbers |
| [`metadata`]  | access [functions metadata]                 |
|   [`serde`]   | export [functions metadata] to JSON         |
| [`debugging`] | required by `rhai-dbg`                      |
|  `rustyline`  | required by `rhai-repl`                     |

Install Tools

To install all these tools (with full features), use the following command:

cargo install --path . --bins  --features bin-features

or specifically:

cargo install --path . --bin sample_app_to_run  --features bin-features

Run a Tool from Cargo

Tools can also be run with the following cargo command:

cargo run --features bin-features --bin sample_app_to_run

Tools List


`rhai-repl` is a particularly useful tool – it allows one to interactively try out
Rhai's language features in a standard REPL (**R**ead-**E**val-**P**rint **L**oop).

Filenames passed to it as command line arguments are run and loaded as Rhai scripts before the REPL starts.

### Test functions

The following test functions are pre-registered, via `Engine::register_fn`, into `rhai-repl`.
They are intended for testing purposes.

| Function                             | Description                                |
| ------------------------------------ | ------------------------------------------ |
| `test(x: i64, y: i64)`               | returns a string with both numbers         |
| `test(x: &mut i64, y: i64, z: &str)` | displays the parameters and add `y` to `x` |

### Example

The following command first runs three scripts – `init1.rhai`, `init2.rhai` and `init3.rhai` –
loading the functions defined in each script into the _global_ namespace.

Then it enters an REPL, which can call the above functions freely.

```sh
rhai-repl init1.rhai init2.rhai init3.rhai
```

Use `rhai-run` to run Rhai scripts.

Filenames passed to it as command line arguments are run in sequence as Rhai scripts.

### Example

The following command runs the scripts `script1.rhai`, `script2.rhai` and `script3.rhai` in order.

```sh
rhai-run script1.rhai script2.rhai script3.rhai
```

Use `rhai-dbg` to debug a Rhai script.

Filename passed to it will be loaded as a Rhai script for debugging.

### Example

The following command debugs the script `my_script.rhai`.

```sh
rhai-dbg my_script.rhai
```