1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-05-31 14:47:34 +02:00
comprehensive-rust/src/basic-syntax/compound-types.md
Robin Stringer 41bb8acf3f
Removes out of bounds checks for simplicity
Removes the out of bounds checks to keep the notes simple.
2023-01-11 14:35:20 +00:00

1.3 KiB

Compound Types

Types Literals
Arrays [T; N] [20, 30, 40], [0; 3]
Tuples (), (T,), (T1, T2), ... (), ('x',), ('x', 1.2), ...

Array assignment and access:

fn main() {
    let mut a: [i8; 10] = [42; 10];
    a[5] = 0;
    println!("a: {:?}", a);
}

Tuple assignment and access:

fn main() {
    let t: (i8, bool) = (7, true);
    println!("1st index: {}", t.0);
    println!("2nd index: {}", t.1);
}

Key points:

Arrays:

*Arrays have elements of the same type, T, and length, N, which is fixed.

*We can use literals to assign values to arrays.

*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.

*Adding #, eg {a:#?}, invokes a "pretty printing" format, which can be easier to read.

Tuples:

*Like arrays, tuples have a fixed length.

*Tuples group together values of different types into a compound type.

*Fields that can be accessed by the period and the index of the value, e.g. t.0, t.1.