面试题答案
一键面试fn compare_and_print<T: PartialOrd + Debug>(a: T, b: T) {
if a >= b {
println!("The larger value is: {:?}", a);
} else {
println!("The larger value is: {:?}", b);
}
}
在这种场景下需要这样的泛型约束的原因:
PartialOrd
trait 是为了能够比较两个值的大小。如果没有这个 trait 的约束,就无法使用>=
这样的比较操作符,也就无法判断哪个值更大。Debug
trait 是为了能够使用{:?}
格式化输出,将值以调试格式打印出来。如果没有这个 trait 的约束,就不能在println!
宏中使用{:?}
格式化方式来输出较大的值。