Maximum Call Stack Depth

Limit How Stack Usage by Scripts

Rhai by default limits function calls to a maximum depth of 128 levels (8 levels in debug build).

This limit may be changed via the Engine::set_max_call_levels method.

A script exceeding the maximum call stack depth will terminate with an error result.

This check can be disabled via the unchecked feature for higher performance (but higher risks as well).


#![allow(unused)]
fn main() {
let mut engine = Engine::new();

engine.set_max_call_levels(10);     // allow only up to 10 levels of function calls

engine.set_max_call_levels(0);      // allow no function calls at all (max depth = zero)
}

Setting Maximum Stack Depth

When setting this limit, care must be also taken to the evaluation depth of each statement within a function. It is entirely possible for a malicious script to embed a recursive call deep inside a nested expression or statement block (see maximum statement depth).