Index Expressions
An index expression accesses an element of an array.
index_expr = expression "[" expression "]" ;
The expression before the brackets MUST have an array type [T; N].
The index expression MUST have an unsigned integer type (u8, u16, u32, or u64).
The type of an index expression is the element type T.
fn main() -> i32 {
let arr: [i32; 3] = [10, 42, 100];
arr[1] // 42
}
Bounds Checking
For constant indices, bounds checking MUST be performed at compile time.
For variable indices, bounds checking MUST be performed at runtime.
An out-of-bounds access MUST cause a runtime panic.
fn main() -> i32 {
let arr: [i32; 3] = [1, 2, 3];
arr[5] // Compile-time error: index out of bounds
}
fn main() -> i32 {
let arr: [i32; 3] = [1, 2, 3];
let idx = 5;
arr[idx] // Runtime error: index out of bounds
}
Index Assignment
For mutable arrays, elements can be assigned using index expressions.
fn main() -> i32 {
let mut arr: [i32; 2] = [0, 0];
arr[0] = 20;
arr[1] = 22;
arr[0] + arr[1] // 42
}