To use Rhai, create an Engine instance, register any necessary external functions, and then evaluate your script using eval_file or eval.
Example script (my_script.rhai):
fn factorial(x) {
if x == 1 { return 1; }
x * factorial(x - 1)
}
compute(factorial(10))
Rust implementation:
use rhai::{Engine, EvalAltResult};
fn main() -> Result<(), Box<EvalAltResult>>
{
// Define external function
fn compute_something(x: i64) -> bool {
(x % 40) == 0
}
// Create scripting engine
let mut engine = Engine::new();
// Register external function as 'compute'
engine.register_fn("compute", compute_something);
// Evaluate the script, expecting a 'bool' result
let result: bool = engine.eval_file("my_script.rhai".into())?;
assert_eq!(result, true);
Ok(())
}
use rhai::{Engine, EvalAltResult};
fn main() -> Result<(), Box<EvalAltResult>>
{
fn compute_something(x: i64) -> bool {
(x % 40) == 0
}
let mut engine = Engine::new();
engine.register_fn("compute", compute_something);
let result: bool = engine.eval_file("my_script.rhai".into())?;
assert_eq!(result, true);
Ok(())
}