MST

星途 面试题库

面试题:Rust闭包作为参数的复杂类型约束应用

假设有一个结构体`Point`,包含`x`和`y`两个`f64`类型的字段。编写一个函数,该函数接受一个闭包作为参数,闭包接受两个`Point`结构体实例作为参数,并返回一个新的`Point`结构体实例,新实例的`x`和`y`分别是传入两个实例对应字段之和。要求清晰展示闭包作为参数时类型约束的实现以及泛型在其中的应用。
44.6万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义Point结构体
struct Point {
    x: f64,
    y: f64,
}

// 定义函数,接受闭包作为参数
fn operate_points<F>(func: F)
where
    F: Fn(Point, Point) -> Point,
{
    let p1 = Point { x: 1.0, y: 2.0 };
    let p2 = Point { x: 3.0, y: 4.0 };
    let result = func(p1, p2);
    println!("Result: x = {}, y = {}", result.x, result.y);
}

fn main() {
    // 定义闭包
    let closure = |p1: Point, p2: Point| Point {
        x: p1.x + p2.x,
        y: p1.y + p2.y,
    };
    operate_points(closure);
}