capypad
0 Tage Serie
rust / beginner
Snippet

Generische Funktionen

Generische Funktionen arbeiten mit mehreren Typen unter Verwendung von Typparametern. Die Syntax <T: PartialOrd> gibt an, dass T ein Typ sein muss, der mit dem > Operator verglichen werden kann. Dies ermöglicht es, dass dieselbe Funktion mit Ganzzahlen, Zeichen und jedem anderen vergleichbaren Typ funktioniert.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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!("The largest number is {}", largest(&numbers));
let chars = vec!['y', 'm', 'a', 'q'];
println!("The largest char is {}", largest(&chars));
}
Erklärung
1
fn largest<T: PartialOrd>(
Funktion mit generischem Typ T, beschränkt durch PartialOrd-Trait
2
list: &[T]
Parameter ist ein Slice vom Typ T
3
let mut largest = &list[0];
Veränderliche Referenz, initialisiert auf erstes Element
4
if item > largest {
Vergleich erfordert PartialOrd-Trait-Bound
5
largest = item;
Aktualisiert Referenz auf gefundenen größeren Wert