capypad
0 Tage Serie
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
rust
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