MST

星途 面试题库

面试题:Rust类型推断在泛型函数中的应用

请编写一个Rust泛型函数,该函数接受两个相同类型的参数并返回它们的和。在函数定义中,不明确指定类型参数的具体类型,依靠Rust的类型推断机制来确定类型。同时说明在这个过程中Rust类型推断是如何工作的。
48.2万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn add<T: std::ops::Add<Output = T>>(a: T, b: T) -> T {
    a + b
}

在这个过程中,Rust类型推断的工作原理如下:

  1. 当调用add函数时,编译器会观察传入的参数类型。例如,如果调用add(1, 2),编译器看到传入的是两个i32类型的值。
  2. 因为函数定义要求两个参数类型相同且实现了Add trait,并返回与参数相同的类型。编译器通过传入的参数类型i32,确定了类型参数Ti32,因为i32类型实现了Add trait,并且i32 + i32的结果也是i32
  3. 编译器根据类型推断的结果,为add函数实例化一个针对i32类型的具体版本。如果调用add(1.5, 2.5),编译器同样会推断Tf64,因为传入的是f64类型,且f64实现了Add trait 并满足返回类型要求。