[][src]Crate rhai

Rhai - embedded scripting for Rust

Rhai is a tiny, simple and very fast embedded scripting language for Rust that gives you a safe and easy way to add scripting to your applications. It provides a familiar syntax based on JS and Rust and a simple Rust interface. Here is a quick example. First, the contents of my_script.rhai:

This example is not tested
fn factorial(x) {
    if x == 1 { return 1; }
    x * factorial(x - 1)
}

compute_something(factorial(10))

And the Rust part:

use rhai::{Engine, EvalAltResult, RegisterFn};

fn main() -> Result<(), EvalAltResult>
{
    fn compute_something(x: i64) -> bool {
        (x % 40) == 0
    }

    let mut engine = Engine::new();

    engine.register_fn("compute_something", compute_something);

    assert_eq!(engine.eval_file::<bool>("my_script.rhai".into())?, true);

    Ok(())
}

Optional features

FeatureDescription
no_stdlibExclude the standard library of utility functions in the build, and only include the minimum necessary functionalities. Standard types are not affected.
uncheckedExclude arithmetic checking (such as overflows and division by zero). Beware that a bad script may panic the entire system!
no_functionDisable script-defined functions if not needed.
no_indexDisable arrays and indexing features if not needed.
no_objectDisable support for custom types and objects.
no_floatDisable floating-point numbers and math if not needed.
no_optimizeDisable the script optimizer.
only_i32Set the system integer type to i32 and disable all other integer types. INT is set to i32.
only_i64Set the system integer type to i64 and disable all other integer types. INT is set to i64.
no_stdBuild for no-std. Notice that additional dependencies will be pulled in to replace std features.
syncRestrict all values types to those that are Send + Sync. Under this feature, Engine, Scope and AST are all Send + Sync.

Check out the README on GitHub for details on the Rhai language!

Structs

AST

Compiled AST (abstract syntax tree) of a Rhai script.

Engine

Rhai main scripting engine.

ParseError

Error when parsing a script.

Position

A location (line number + character position) in the input script.

Scope

A type containing information about the current scope. Useful for keeping state between Engine evaluation runs.

Enums

EvalAltResult

Evaluation result.

OptimizationLevel

Level of optimization performed.

ParseErrorType

Type of error encountered when parsing a script.

Traits

Any

A trait covering any type.

AnyExt

An extension trait that allows down-casting a Dynamic value to a specific type.

FuncArgs

Trait that represent arguments to a function call. Any data type that can be converted into a Vec of Dynamic values can be used as arguments to a function call.

RegisterDynamicFn

A trait to register custom functions that return Dynamic values with the Engine.

RegisterFn

A trait to register custom functions with the Engine.

RegisterResultFn

A trait to register fallible custom functions returning Result<_, EvalAltResult> with the Engine.

Type Definitions

Array

An dynamic array of Dynamic values.

Dynamic

A boxed dynamic type containing any value.

FLOAT

The system floating-point type.

INT

The system integer type.

Map

An dynamic hash map of Dynamic values with String keys.

Variant

An raw value of any type.