capypad
0 day streak
rust / beginner
Snippet

Generic Functions with Type Parameters

Generic functions work with multiple types using type parameters. The <T: PartialOrd> syntax means T must implement the PartialOrd trait, which allows comparison. This single function handles both integers and characters.

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));
}
Breakdown
1
fn largest<T: PartialOrd>(list: &[T]) -> &T {
Function signature with generic type T constrained to implement PartialOrd
2
let mut largest = &list[0];
Mutable reference to first element as initial largest value
3
for item in list {
Iterates over each element in the slice
4
if item > largest {
Compares current item with largest using derived PartialOrd
5
largest = item;
Updates largest reference if current item is greater
6
largest(&numbers)
Calls function with a reference to a vector of i32 values