Primitive Types
Every primitive type in Rux, by family — 38 of them, every one implemented by rux 0.4.0. The names are predefined type names, not keywords.
| Type | Family | Bits | Bytes | Holds | Literal |
|---|---|---|---|---|---|
int8 | Signed integer | 8 | 1 | −128 to 127 | i8 |
int16 | Signed integer | 16 | 2 | −32,768 to 32,767 | i16 |
int32 | Signed integer | 32 | 4 | −231 to 231 − 1 | i32 |
int64 | Signed integer | 64 | 8 | −263 to 263 − 1 | i64 |
int128 | Signed integer | 128 | 16 | −2127 to 2127 − 1 | i128 |
int256 | Signed integer | 256 | 32 | −2255 to 2255 − 1 | i256 |
int512 | Signed integer | 512 | 64 | −2511 to 2511 − 1 | i512 |
int | Signed integer | 64 | 8 | Pointer-sized; as int64 on every supported target | i, or none |
uint8 | Unsigned integer | 8 | 1 | 0 to 255 | u8 |
uint16 | Unsigned integer | 16 | 2 | 0 to 65,535 | u16 |
uint32 | Unsigned integer | 32 | 4 | 0 to 232 − 1 | u32 |
uint64 | Unsigned integer | 64 | 8 | 0 to 264 − 1 | u64 |
uint128 | Unsigned integer | 128 | 16 | 0 to 2128 − 1 | u128 |
uint256 | Unsigned integer | 256 | 32 | 0 to 2256 − 1 | u256 |
uint512 | Unsigned integer | 512 | 64 | 0 to 2512 − 1 | u512 |
uint | Unsigned integer | 64 | 8 | Pointer-sized; as uint64 on every supported target | u |
float8 | Floating-point | 8 | 1 | E4M3, with infinities and NaNs | f8 |
float16 | Floating-point | 16 | 2 | IEEE 754 binary16 | f16 |
float32 | Floating-point | 32 | 4 | IEEE 754 binary32 | f32 |
float64 | Floating-point | 64 | 8 | IEEE 754 binary64 | f64, or none |
float80 | Floating-point | 80 | 16 | x87 extended precision, 80 bits in 16 bytes | f80 |
float128 | Floating-point | 128 | 16 | IEEE 754 binary128 | f128 |
float256 | Floating-point | 256 | 32 | IEEE 754 binary256 | f256 |
float512 | Floating-point | 512 | 64 | binary512: 23-bit exponent, 489 bits of precision | f512 |
bool8 | Boolean | 8 | 1 | false, true | true, false |
bool16 | Boolean | 16 | 2 | false, true | — |
bool32 | Boolean | 32 | 4 | false, true | — |
bool64 | Boolean | 64 | 8 | false, true | — |
bool128 | Boolean | 128 | 16 | false, true | — |
bool256 | Boolean | 256 | 32 | false, true | — |
bool512 | Boolean | 512 | 64 | false, true | — |
char8 | Character | 8 | 1 | A UTF-8 code unit, 0 to 255 | c8'…' |
char16 | Character | 16 | 2 | A UTF-16 code unit, 0 to 65,535 | c16'…' |
char32 | Character | 32 | 4 | A Unicode scalar value | c32'…', or none |
char64 | Character | 64 | 8 | A Unicode scalar value | c64'…' |
char128 | Character | 128 | 16 | A Unicode scalar value | c128'…' |
char256 | Character | 256 | 32 | A Unicode scalar value | c256'…' |
char512 | Character | 512 | 64 | A Unicode scalar value | c512'…' |
Built-in aliases
| Alias | Same type as |
|---|---|
bool | bool8 |
byte | uint8 |
char | char32 |
float | float64 |
An alias is another name for its target, not a separate type; see Type Aliases.
Defaults
- An unsuffixed integer literal is an
int, unless its context requires another integer type. - An unsuffixed floating-point literal is a
float64. - An unprefixed character literal is a
char32, unless it initialises achar8orchar16. - An unprefixed string literal is a
char8[..].
Associated constants
Each primitive is extended with constants in Core, available once that extension is imported, as in import Core::int32;. The types themselves are built in and need no import:
| Family | Constants |
|---|---|
| Integers | Bits, Bytes, Min, Max |
| Floating-point | Bits, Bytes, Lowest, Max, MinPositive, Epsilon, Infinity, NaN |
| Booleans | Bits, Bytes |
| Characters | Bits, Bytes, Min, Max |
See also
- Types — conversions and type expressions
- Integers, Floating-Point, Booleans, Characters
- Literals — suffixes and prefixes