1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-06-08 18:46:15 +02:00
2025-02-27 12:27:43 -08:00

44 lines
1.4 KiB
Markdown

---
minutes: 5
---
# Arrays
<!-- mdbook-xgettext: skip -->
```rust,editable
fn main() {
let mut a: [i8; 5] = [5, 4, 3, 2, 1];
a[2] = 0;
println!("a: {a:?}");
}
```
<details>
- Arrays can also be initialized using the shorthand syntax, e.g. `[0; 1024]`.
This can be useful when you want to initialize all elements to the same value,
or if you have a large array that would be hard to initialize manually.
- A value of the array type `[T; N]` holds `N` (a compile-time constant)
elements of the same type `T`. Note that the length of the array is _part of
its type_, which means that `[u8; 3]` and `[u8; 4]` are considered two
different types. Slices, which have a size determined at runtime, are covered
later.
- Try accessing an out-of-bounds array element. Array accesses are checked at
runtime. Rust can usually optimize these checks away, and they can be avoided
using unsafe Rust.
- We can use literals to assign values to arrays.
- The `println!` macro asks for the debug implementation with the `?` format
parameter: `{}` gives the default output, `{:?}` gives the debug output. Types
such as integers and strings implement the default output, but arrays only
implement the debug output. This means that we must use debug output here.
- Adding `#`, eg `{a:#?}`, invokes a "pretty printing" format, which can be
easier to read.
</details>