LearningOS/rcore_step_by_step

练习题二

Closed this issue · 0 comments

练习二:
下面的例子展示了一个可以编译的泛型版本的 largest 函数的完整代码,只要传递给 largest 的 slice 值的类型实现了 PartialOrd 和 Copy 这两个 trait,例如 i32 和 char,就可以正确编译执行。
请把函数名改为

fn largest<T: PartialOrd >(list: &[T]) -> &T

然后重新实现largest函数内容和main函数,并确保同样能正确编译&执行。

fn largest<T: 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);
}