面试题答案
一键面试fn add<T: std::ops::Add<Output = T>>(a: T, b: T) -> T {
a + b
}
在这个过程中,Rust类型推断的工作原理如下:
- 当调用
add
函数时,编译器会观察传入的参数类型。例如,如果调用add(1, 2)
,编译器看到传入的是两个i32
类型的值。 - 因为函数定义要求两个参数类型相同且实现了
Add
trait,并返回与参数相同的类型。编译器通过传入的参数类型i32
,确定了类型参数T
为i32
,因为i32
类型实现了Add
trait,并且i32 + i32
的结果也是i32
。 - 编译器根据类型推断的结果,为
add
函数实例化一个针对i32
类型的具体版本。如果调用add(1.5, 2.5)
,编译器同样会推断T
为f64
,因为传入的是f64
类型,且f64
实现了Add
trait 并满足返回类型要求。