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.