Skip to main content

types

primitives

typesizedescription
bool1 bytetrue or false
uint81 byteunsigned 8-bit integer
uint162 bytesunsigned 16-bit integer
uint324 bytesunsigned 32-bit integer
uint648 bytesunsigned 64-bit integer
usizebased on CPU bitsunsigned integer
int81 bytesigned 8-bit integer
int162 bytessigned 16-bit integer
int324 bytessigned 32-bit integer
int648 bytessigned 64-bit integer
isizebased on CPU bitssigned integer
float162 bytes16-bit floating point number
float324 bytes32-bit floating point number
float648 bytes64-bit floating point number
strutf-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.