types
primitives
| type | size | description |
|---|---|---|
bool | 1 byte | true or false |
uint8 | 1 byte | unsigned 8-bit integer |
uint16 | 2 bytes | unsigned 16-bit integer |
uint32 | 4 bytes | unsigned 32-bit integer |
uint64 | 8 bytes | unsigned 64-bit integer |
usize | based on CPU bits | unsigned integer |
int8 | 1 byte | signed 8-bit integer |
int16 | 2 bytes | signed 16-bit integer |
int32 | 4 bytes | signed 32-bit integer |
int64 | 8 bytes | signed 64-bit integer |
isize | based on CPU bits | signed integer |
float16 | 2 bytes | 16-bit floating point number |
float32 | 4 bytes | 32-bit floating point number |
float64 | 8 bytes | 64-bit floating point number |
str | — | utf-8 string |
fixed arrays
fixed-size arrays are stack-allocated. the size must be known at compile time.
let a: [int32; 4] = [1, 2, 3, 4];
if the initializer has fewer elements than the declared size, the remaining elements
are zero-initialized — but only if the type implements the Default trait.
otherwise it is a compile error.
let a: [int32; 4] = [1]; // a[1], a[2], a[3] == 0
let a: [MyStruct; 4] = [s]; // compile error if MyStruct: !Default
dynamic arrays
dynamic arrays are heap-allocated. see stdlib/array for the full API.
let mut b: Array[int32] = [1, 2, 3];
generics
void uses [] for generic type parameters.
struct Pair[A, B] {
first: A,
second: B,
}
let p: Pair[str, int32] = Pair { first: "hello", second: 42 };
option and result
Option[T] = Some(T) | None
Result[T, E] = Ok(T) | Err(E)
see error handling for usage.