Tuples and Arrays
Tuples and arrays are the first "compound" types we have seen. All elements of an array have the same type, while tuples can accommodate different types. Both types have a size fixed at compile time.
Types | Literals | |
---|---|---|
Arrays | [T; N] | [20, 30, 40] , [0; 3] |
Tupel | () , (T,) , (T1, T2) , ... | () , ('x',) , ('x', 1.2) , ... |
Array-Zuordnung und Zugriff:
fn main() { let mut a: [i8; 10] = [42; 10]; a[5] = 0; println!("a: {a:?}"); }
Tupel-Zuweisung und Zugriff:
fn main() { let t: (i8, bool) = (7, true); println!("t.0: {}", t.0); println!("t.1: {}", t.1); }
SchlĂŒsselpunkte:
Arrays:
-
A value of the array type
[T; N]
holdsN
(a compile-time constant) elements of the same typeT
. 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.
-
Wir können Literale verwenden, um Arrays Werte zuzuweisen.
-
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. -
Das HinzufĂŒgen von
#
, z. B.{a:#?}
, ruft ein âhĂŒbsches Druckformatâ (pretty print) auf, das einfacher zu lesen ist.
Tupel:
-
Wie Arrays haben Tupel eine feste LĂ€nge.
-
Tupel gruppieren Werte unterschiedlicher Typen zu einem zusammengesetzten Typ.
-
Auf Felder eines Tupels kann durch einen Punkt gefolgt von dem Index des Werts zugegriffen werden, z. B. ât.0â, ât.1â.
-
The empty tuple
()
is also known as the "unit type". It is both a type, and the only valid value of that type --- that is to say both the type and its value are expressed as()
. It is used to indicate, for example, that a function or expression has no return value, as we'll see in a future slide.- You can think of it as
void
that can be familiar to you from other programming languages.
- You can think of it as