| r[type.array] | |
| # Array types | |
| r[type.array.syntax] | |
| ```grammar,types | |
| ArrayType -> `[` Type `;` Expression `]` | |
| ``` | |
| r[type.array.intro] | |
| An array is a fixed-size sequence of `N` elements of type `T`. The array type is written as `[T; N]`. | |
| r[type.array.constraint] | |
| The size is a [constant expression] that evaluates to a [`usize`]. | |
| Examples: | |
| ```rust | |
| // A stack-allocated array | |
| let array: [i32; 3] = [1, 2, 3]; | |
| // A heap-allocated array, coerced to a slice | |
| let boxed_array: Box<[i32]> = Box::new([1, 2, 3]); | |
| ``` | |
| r[type.array.index] | |
| All elements of arrays are always initialized, and access to an array is always bounds-checked in safe methods and operators. | |
| > [!NOTE] | |
| > The [`Vec<T>`] standard library type provides a heap-allocated resizable array type. | |
| [`usize`]: numeric.md#machine-dependent-integer-types | |
| [constant expression]: ../const_eval.md#constant-expressions |