rust / beginner
Snippet
Generische Funktionen mit Typparametern
Generische Funktionen arbeiten mit mehreren Typen unter Verwendung von Typparametern. Die Syntax <T: PartialOrd> bedeutet, dass T den PartialOrd-Trait implementieren muss, was Vergleiche ermoeglicht. Diese einzelne Funktion verarbeitet sowohl Integer als auch Zeichen.
snippet.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
fn largest<T: PartialOrd>(list: &[T]) -> &T {let mut largest = &list[0];for item in list {if item > largest {largest = item;}}largest}fn main() {let numbers = vec![34, 50, 25, 100, 65];println!("Largest: {}", largest(&numbers));let chars = vec!['y', 'm', 'a', 'q'];println!("Largest char: {}", largest(&chars));}
Erklärung
1
fn largest<T: PartialOrd>(list: &[T]) -> &T {
Funktionssignatur mit generischem Typ T, eingeschrankt auf PartialOrd
2
let mut largest = &list[0];
Veranderliche Referenz auf das erste Element als initial groesster Wert
3
for item in list {
Iteriert uber jedes Element im Slice
4
if item > largest {
Vergleicht aktuelles Element mit groesstem unter Verwendung von abgeleitetem PartialOrd
5
largest = item;
Aktualisiert groesste Referenz, wenn aktuelles Element groesser ist
6
largest(&numbers)
Ruft Funktion mit einer Referenz auf einen Vektor von i32-Werten auf