Rust语言圣经(Rust Course)

泛型 Generics

// 任何实现了 std::cmp::PartialOrd 和 Copy 的类型 T
// 都可以通过该函数求得数组切片 &[T] 中的最大值 T
fn largest<T: std::cmp::PartialOrd + Copy>(list: &[T]) -> T {
    let mut largest = list[0];
    for &item in list.iter() {
        if item > largest {
            largest = item;
        }
    }
    largest
}

fn main() {
    let number_list = vec![34, 50, 25, 100, 65];

    let result = largest(&number_list);
    println!("The largest number is {}", result);

    let char_list = vec!['y', 'm', 'a', 'q'];

    let result = largest(&char_list);
    println!("The largest char is {}", result);
}

特征 Trait

特征对象 dyn

进阶用法