MST

星途 面试题库

面试题:Rust高阶函数与泛型的结合使用

编写一个高阶函数,它接受一个泛型函数作为参数,该泛型函数能够接受两个相同类型的参数并返回该类型的结果。你的高阶函数应该能够对一个包含i32类型元素的向量中的每个元素应用这个泛型函数,并返回一个新的向量。例如,传入的泛型函数是将两个数相乘,那么对向量[2, 3, 4]应用该泛型函数后(假设每次都用向量元素和5相乘),返回[10, 15, 20]。请给出完整的Rust代码实现,包括必要的泛型声明和生命周期标注。
27.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn apply_to_vector<F, T>(func: F, vec: &[T]) -> Vec<T>
where
    F: Fn(T, T) -> T,
    T: Clone,
{
    vec.iter().map(|&x| func(x, 5.clone())).collect()
}

fn main() {
    let numbers = vec![2, 3, 4];
    let multiply = |a: i32, b: i32| a * b;
    let result = apply_to_vector(multiply, &numbers);
    println!("{:?}", result);
}