MST

星途 面试题库

面试题:Rust泛型约束实现中的多trait约束问题

编写一个Rust函数`compare_and_print`,该函数接受两个泛型参数,这两个参数都需要同时实现`PartialOrd`和`Debug` trait。函数需要比较这两个参数的大小并打印出较大的那个。请写出完整的函数定义,并解释为什么在这种场景下需要这样的泛型约束。
23.4万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
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! 宏中使用 {:?} 格式化方式来输出较大的值。