blob: e01a4e5ee4461bcc9c507525a83c7b1ce78c2699 [file] [log] [blame] [view]
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