面试题答案
一键面试// 定义泛型函数
fn operate_on_tuple<T: std::ops::Add<Output = T> + std::fmt::Display>(tuple: (T, T)) -> T {
tuple.0 + tuple.1
}
可能遇到的类型推断相关问题及解决方法
- 类型约束不明确:如果不明确指定
T
实现Add
trait 并且指定其输出类型为T
,编译器无法确定tuple.0 + tuple.1
操作的合法性。解决方法就是像上面代码那样,明确指定T: std::ops::Add<Output = T>
。 - 类型推断失败:在某些复杂场景下,编译器可能无法准确推断出具体类型。比如当函数调用的参数类型不明确时。解决方法可以显式指定类型参数,例如
let result = operate_on_tuple::<i32>((1, 2));
,这样就明确告诉编译器使用i32
类型来实例化泛型函数。