2022-12-21 16:36:30 +01:00
# Compound Types
2022-12-28 15:41:08 +01:00
| | Types | Literals |
|--------|-------------------------------|-----------------------------------|
| Arrays | `[T; N]` | `[20, 30, 40]` , `[0; 3]` |
| Tuples | `()` , `(T,)` , `(T1, T2)` , ... | `()` , `('x',)` , `('x', 1.2)` , ... |
2022-12-21 16:36:30 +01:00
Array assignment and access:
```rust,editable
fn main() {
let mut a: [i8; 10] = [42; 10];
a[5] = 0;
println!("a: {:?}", a);
}
```
Tuple assignment and access:
```rust,editable
fn main() {
let t: (i8, bool) = (7, true);
println!("1st index: {}", t.0);
println!("2nd index: {}", t.1);
}
```
2023-01-09 14:18:37 +00:00
< details >
Key points:
Arrays:
2023-01-12 11:26:48 +01:00
* Arrays have elements of the same type, `T` , and length, `N` , which is a compile-time constant.
2023-01-09 14:18:37 +00:00
2023-01-12 11:26:48 +01:00
* We can use literals to assign values to arrays.
2023-01-09 14:18:37 +00:00
2023-01-12 11:26:48 +01:00
* In the main function, the print statement asks for the debug implementation with the `?` format parameter: `{a}` gives the default output, `{a:?}` gives the debug output.
2023-01-09 14:18:37 +00:00
2023-01-12 11:26:48 +01:00
* Adding `#` , eg `{a:#?}` , invokes a "pretty printing" format, which can be easier to read.
2023-01-09 14:18:37 +00:00
Tuples:
2023-01-12 11:26:48 +01:00
* Like arrays, tuples have a fixed length.
2023-01-09 14:18:37 +00:00
2023-01-12 11:26:48 +01:00
* Tuples group together values of different types into a compound type.
2023-01-09 14:18:37 +00:00
2023-01-12 11:26:48 +01:00
* Fields that can be accessed by the period and the index of the value, e.g. `t.0` , `t.1` .
2023-01-09 14:18:37 +00:00
< / details >