[][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(())
}

Check out the README on GitHub for more information!

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.

Variant

An raw value of any type.