面试题答案
一键面试fn find_max<T: PartialOrd>(slice: &[T]) -> Option<&T> {
slice.iter().max()
}
- 泛型参数约束:
- 在函数定义
fn find_max<T: PartialOrd>(slice: &[T]) -> Option<&T>
中,对泛型参数T
进行了PartialOrd
trait的约束。这确保了只有实现了PartialOrd
trait的类型才能使用这个函数。PartialOrd
trait定义了部分排序关系,允许类型进行比较操作,例如>
,<
等,这对于找出最大值是必需的。
- 在函数定义
- 处理切片为空的情况:
- 使用
slice.iter().max()
方法。iter
方法将切片转换为迭代器,max
方法在迭代器中找到最大的元素。如果切片为空,max
方法会返回None
,这与函数的返回类型Option<&T>
相匹配。所以,当切片为空时,函数会返回None
,而当切片不为空时,会返回切片中最大元素的引用。
- 使用