Value Types
The following primitive value types are supported natively.
| Category | type_of() | to_string() |
|---|---|---|
| System integer | "i32" or "i64" | "42", "123" etc. |
| Other integer number | "i32", "u64" etc. | "42", "123" etc. |
| Integer numeric range | "range", "range=" | "2..7", "0..=15" etc. |
| Floating-point number | "f32" or "f64" | "123.4567" etc. |
| Fixed precision decimal number | "decimal" | "42", "123.4567" etc. |
| Boolean value | "bool" | "true" or "false" |
| Unicode character | "char" | "A", "x" etc. |
| Immutable Unicode string | "string" | "hello" etc. |
Array | "array" | "[ 1, 2, 3 ]" etc. |
Byte array – BLOB | "blob" | "[01020304abcd]" etc. |
| Object map | "map" | "#{ "a": 1, "b": true }" etc. |
| Timestamp | "timestamp" | "<timestamp>" |
| Function pointer | "Fn" | "Fn(foo)" etc. |
| Dynamic value (i.e. can be anything) | the actual type | actual value |
| Shared value (a reference-counted, shared dynamic value, created via closures | the actual type | actual value |
| Nothing/void/nil/null/Unit (or whatever it is called) | "()" | "" (empty string) |
All types are treated strictly distinct by Rhai, meaning that i32 and i64 and u32 are
completely different. They cannot even be added together.
This is very similar to Rust.