MST
星途 面试题库

面试题:Rust函数别名与泛型的协同应用

编写一个Rust泛型函数`process_data`,它接受一个泛型类型参数`T`和一个处理函数`handler`。要求`handler`是一个函数别名,且该函数别名支持不同类型的处理逻辑。请实现这个`process_data`函数,并展示如何通过函数别名来动态选择不同的处理逻辑,同时要考虑类型安全。
41.3万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义函数别名
type Handler<T> = fn(T) -> T;

// 泛型函数,接受泛型类型参数T和处理函数handler
fn process_data<T>(data: T, handler: Handler<T>) -> T {
    handler(data)
}

// 定义两个不同处理逻辑的函数
fn double(x: i32) -> i32 {
    x * 2
}

fn square(x: f64) -> f64 {
    x * x
}

fn main() {
    let result1 = process_data(5, double);
    let result2 = process_data(3.5, square);

    println!("Result 1: {}", result1);
    println!("Result 2: {}", result2);
}