MST

星途 面试题库

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

假设有一个函数,它接收一个切片引用作为参数,用于计算切片中所有元素的和。请编写这个函数,并说明Rust如何对传入的切片引用进行类型推断。函数参数类型应该使用通用类型 `T`,假设 `T` 实现了 `std::ops::Add` 及相关 trait。
33.4万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn sum<T: std::ops::Add<Output = T> + Copy>(slice: &[T]) -> T {
    slice.iter().copied().fold(T::default(), |acc, val| acc + val)
}

在Rust中,当函数接收一个切片引用 &[T] 作为参数时,类型推断机制会根据实际传入切片的元素类型来确定 T 的具体类型。只要传入的切片元素类型实现了 std::ops::Add trait 以及 Copy trait(因为 fold 方法使用了 copied,需要 Copy),Rust就能正确推断出 T 的类型,使得函数能够正常工作。 例如,如果传入一个 &[i32] 切片,Rust 会推断 Ti32,因为 i32 类型实现了 std::ops::AddCopy trait。