2020-07-05 09:23:51 +02:00
|
|
|
Disable Certain Keywords and/or Operators
|
|
|
|
========================================
|
|
|
|
|
|
|
|
{{#include ../links.md}}
|
|
|
|
|
|
|
|
For certain embedded usage, it is sometimes necessary to restrict the language to a strict subset of Rhai
|
|
|
|
to prevent usage of certain language features.
|
|
|
|
|
|
|
|
Rhai supports surgically disabling a keyword or operator via the `Engine::disable_symbol` method.
|
|
|
|
|
|
|
|
```rust
|
|
|
|
use rhai::Engine;
|
|
|
|
|
|
|
|
let mut engine = Engine::new();
|
|
|
|
|
2020-07-12 05:46:53 +02:00
|
|
|
engine
|
|
|
|
.disable_symbol("if") // disable the 'if' keyword
|
|
|
|
.disable_symbol("+="); // disable the '+=' operator
|
2020-07-05 09:23:51 +02:00
|
|
|
|
|
|
|
// The following all return parse errors.
|
|
|
|
|
|
|
|
engine.compile("let x = if true { 42 } else { 0 };")?;
|
2020-07-17 08:50:23 +02:00
|
|
|
// ^ 'if' is rejected as a reserved keyword
|
2020-07-05 09:23:51 +02:00
|
|
|
|
|
|
|
engine.compile("let x = 40 + 2; x += 1;")?;
|
|
|
|
// ^ '+=' is not recognized as an operator
|
|
|
|
// ^ other operators are not affected
|
|
|
|
```
|